{"id":26199,"date":"2021-06-22T18:25:00","date_gmt":"2021-06-22T15:25:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26199"},"modified":"2021-10-18T02:02:09","modified_gmt":"2021-10-17T23:02:09","slug":"trouver-la-geolocalisation-a-l-aide-d-une-adresse-ip-gratuitement-en-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/trouver-la-geolocalisation-a-l-aide-d-une-adresse-ip-gratuitement-en-php\/","title":{"rendered":"Trouver la g\u00e9olocalisation \u00e0 l&rsquo;aide d&rsquo;une adresse IP gratuitement en PHP"},"content":{"rendered":"<p>Trouver les informations de g\u00e9olocalisation et de pays d&rsquo;un utilisateur est n\u00e9cessaire pour la plupart des sites Web. Vous devez probablement afficher un contenu diff\u00e9rent en fonction du pays d&rsquo;un utilisateur, afficher des prix diff\u00e9rents selon les codes de devise du pays, etc. Dans ces sc\u00e9narios, vous devez trouver la g\u00e9olocalisation d&rsquo;un utilisateur et diffuser le contenu en cons\u00e9quence.<\/p>\n<p>Dans cet article, je vous montre comment trouver la G\u00e9olocalisation en utilisant l&rsquo;adresse IP d&rsquo;un utilisateur en PHP. Nous allons utiliser le <a href=\"https:\/\/ipgeolocationapi.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">service API de g\u00e9olocalisation IP<\/a> qui est enti\u00e8rement gratuit.<\/p>\n<h3>Obtenir la g\u00e9olocalisation \u00e0 l&rsquo;aide de l&rsquo;adresse IP<\/h3>\n<p>En PHP, nous pouvons utiliser le service &lsquo;IP Geolocation API&rsquo; via cURL et Guzzle. Les deux sont populaires pour appeler des services API externes et en obtenir la r\u00e9ponse. En fonction du flux de votre projet, vous pouvez utiliser soit cURL, soit Guzzle. Dans les deux cas, nous devons d&rsquo;abord obtenir l&rsquo;adresse IP de l&rsquo;utilisateur. Alors, \u00e9crivez la m\u00e9thode ci-dessous qui renverra une adresse IP.<\/p>\n<pre><code>&lt;?php\n\/\/ get user's IP address\nfunction getUserIpAddr() {\n\u00a0\u00a0\u00a0\u00a0if (!empty($_SERVER['HTTP_CLIENT_IP'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ip = $_SERVER['HTTP_CLIENT_IP'];\n\u00a0\u00a0\u00a0\u00a0} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];\n\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ip = $_SERVER['REMOTE_ADDR'];\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0return $ip;\n}<\/code><\/pre>\n<h4>Utiliser cURL<\/h4>\n<p>Le cURL est fourni par d\u00e9faut avec l&rsquo;installation de PHP. Pas besoin d&rsquo;installer un package s\u00e9par\u00e9ment. Vous avez juste besoin de vous assurer qu&rsquo;il est activ\u00e9 sur votre serveur avant de l&rsquo;utiliser.<\/p>\n<p>Gr\u00e2ce \u00e0 cURL, nous appellerons le point de terminaison de l&rsquo;API de g\u00e9olocalisation IP en fournissant l&rsquo;adresse IP de l&rsquo;utilisateur et en imprimant la r\u00e9ponse.<\/p>\n<pre><code>&lt;?php\n$ip_address = getUserIpAddr();\n\u00a0\u00a0\n$url = \"https:\/\/api.ipgeolocationapi.com\/geolocate\/$ip_address\";\n$ch = curl_init();\u00a0 \ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\ncurl_setopt($ch, CURLOPT_URL, $url);\n$response = curl_exec($ch);\n$arr_result = json_decode($response);\nprint_r($arr_result);<\/code><\/pre>\n<p>Vous obtiendrez la sortie au format JSON quelque chose comme ci-dessous.<\/p>\n<pre><code>{\n   \"continent\": \"Asia\",\n   \"address_format\": \"{{recipient}}n{{street}}n{{region}}n{{city}} {{postalcode}}n{{country}}\",\n   \"alpha2\": \"IN\",\n   \"alpha3\": \"IND\",\n   \"country_code\": \"91\",\n   \"international_prefix\": \"00\",\n   \"ioc\": \"IND\",\n   \"gec\": \"IN\",\n   \"name\": \"India\",\n   \"national_destination_code_lengths\": [\n     2\n   ],\n   \"national_number_lengths\": [\n     10\n   ],\n   \"national_prefix\": \"0\",\n   \"number\": \"356\",\n   \"region\": \"Asia\",\n   \"subregion\": \"Southern Asia\",\n   \"world_region\": \"APAC\",\n   \"un_locode\": \"IN\",\n   \"nationality\": \"Indian\",\n   \"postal_code\": true,\n   \"unofficial_names\": [\n     \"India\",\n     \"Indien\",\n     \"Inde\",\n     \"\u30a4\u30f3\u30c9\"\n   ],\n   \"languages_official\": [\n     \"hi\",\n     \"en\"\n   ],\n   \"languages_spoken\": [\n     \"hi\",\n     \"en\"\n   ],\n   \"geo\": {\n     \"latitude\": 20.593684,\n     \"latitude_dec\": \"23.4060115814209\",\n     \"longitude\": 78.96288,\n     \"longitude_dec\": \"79.45809173583984\",\n     \"max_latitude\": 35.5087008,\n     \"max_longitude\": 97.3953587,\n     \"min_latitude\": 6.4626999,\n     \"min_longitude\": 68.1097,\n     \"bounds\": {\n       \"northeast\": {\n         \"lat\": 35.5087008,\n         \"lng\": 97.3953587\n       },\n       \"southwest\": {\n         \"lat\": 6.4626999,\n         \"lng\": 68.1097\n       }\n     }\n   },\n   \"currency_code\": \"INR\",\n   \"start_of_week\": \"monday\"\n }<\/code><\/pre>\n<h4>Utiliser Guzzle<\/h4>\n<p><a href=\"https:\/\/docs.guzzlephp.org\/en\/latest\/overview.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Guzzle<\/a> est un client HTTP PHP pour l&rsquo;envoi de requ\u00eates HTTP. C&rsquo;est une alternative \u00e0 cURL. Il fournit un code beaucoup plus propre et une meilleure exp\u00e9rience pour les d\u00e9veloppeurs.<\/p>\n<p>Dans un premier temps, vous devez installer Guzzle \u00e0 l&rsquo;aide du compositeur en ex\u00e9cutant la commande\u00a0:<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Ensuite, \u00e9crivez le code ci-dessous qui appelle l&rsquo;API via Guzzle.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\u00a0\nuse GuzzleHttpClient;\n\u00a0\u00a0\n$ip_address = getUserIpAddr();\n\u00a0\u00a0\n$client = new Client();\n\u00a0\u00a0\n$response = $client-&gt;request('GET', 'https:\/\/api.ipgeolocationapi.com\/geolocate\/'.$ip_address);\n\u00a0\u00a0\nif($response-&gt;getStatusCode() == 200) {\n\u00a0\u00a0\u00a0\u00a0$body = $response-&gt;getBody();\n\u00a0\u00a0\u00a0\u00a0$arr_body = json_decode($body);\n\u00a0\u00a0\u00a0\u00a0print_r($arr_body);\n}<\/code><\/pre>\n<p>C&rsquo;est ainsi que nous obtenons la g\u00e9olocalisation en utilisant l&rsquo;adresse IP en PHP. S&rsquo;il vous pla\u00eet partager vos pens\u00e9es ou suggestions dans la section commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/laravel-geoip-library-decouvrez-la-geolocalisation-a-l-aide-de-l-adresse-ip\/\" title=\"Laravel Geoip Library - D\u00e9couvrez la g\u00e9olocalisation \u00e0 l&#039;aide de l&#039;adresse IP\">Laravel Geoip Library &#8211; D\u00e9couvrez la g\u00e9olocalisation \u00e0 l&rsquo;aide de l&rsquo;adresse IP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-obtenir-la-geolocalisation-a-partir-de-l-ip-en-php\/\" title=\"Comment obtenir la g\u00e9olocalisation depuis IP en PHP\">Comment obtenir la g\u00e9olocalisation depuis IP en PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-utiliser-guzzle-un-client-http-php-pour-envoyer-des-requetes-http\/\" title=\"Comment utiliser Guzzle - Un client HTTP PHP pour envoyer des requ\u00eates HTTP\">Comment utiliser Guzzle &#8211; Un client HTTP PHP pour envoyer des requ\u00eates HTTP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Parfois, nous devons trouver la g\u00e9olocalisation d&rsquo;un utilisateur pour servir un contenu diff\u00e9rent en fonction du pays. Dans cet article, nous vous montrons comment obtenir<\/p>\n","protected":false},"author":1,"featured_media":21605,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[273],"tags":[844],"class_list":["post-26199","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/26199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=26199"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/26199\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21605"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=26199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=26199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=26199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}