Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Trouver la géolocalisation à l’aide d’une adresse IP gratuitement en PHP

484

Trouver les informations de géolocalisation et de pays d’un utilisateur est nécessaire pour la plupart des sites Web. Vous devez probablement afficher un contenu différent en fonction du pays d’un utilisateur, afficher des prix différents selon les codes de devise du pays, etc. Dans ces scénarios, vous devez trouver la géolocalisation d’un utilisateur et diffuser le contenu en conséquence.

Dans cet article, je vous montre comment trouver la Géolocalisation en utilisant l’adresse IP d’un utilisateur en PHP. Nous allons utiliser le service API de géolocalisation IP qui est entièrement gratuit.

Obtenir la géolocalisation à l’aide de l’adresse IP

En PHP, nous pouvons utiliser le service ‘IP Geolocation API’ via cURL et Guzzle. Les deux sont populaires pour appeler des services API externes et en obtenir la réponse. En fonction du flux de votre projet, vous pouvez utiliser soit cURL, soit Guzzle. Dans les deux cas, nous devons d’abord obtenir l’adresse IP de l’utilisateur. Alors, écrivez la méthode ci-dessous qui renverra une adresse IP.

<?php
// get user's IP address
function getUserIpAddr() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

Utiliser cURL

Le cURL est fourni par défaut avec l’installation de PHP. Pas besoin d’installer un package séparément. Vous avez juste besoin de vous assurer qu’il est activé sur votre serveur avant de l’utiliser.

Grâce à cURL, nous appellerons le point de terminaison de l’API de géolocalisation IP en fournissant l’adresse IP de l’utilisateur et en imprimant la réponse.

<?php
$ip_address = getUserIpAddr();
  
$url = "https://api.ipgeolocationapi.com/geolocate/$ip_address";
$ch = curl_init();  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$response = curl_exec($ch);
$arr_result = json_decode($response);
print_r($arr_result);

Vous obtiendrez la sortie au format JSON quelque chose comme ci-dessous.

{
   "continent": "Asia",
   "address_format": "{{recipient}}n{{street}}n{{region}}n{{city}} {{postalcode}}n{{country}}",
   "alpha2": "IN",
   "alpha3": "IND",
   "country_code": "91",
   "international_prefix": "00",
   "ioc": "IND",
   "gec": "IN",
   "name": "India",
   "national_destination_code_lengths": [
     2
   ],
   "national_number_lengths": [
     10
   ],
   "national_prefix": "0",
   "number": "356",
   "region": "Asia",
   "subregion": "Southern Asia",
   "world_region": "APAC",
   "un_locode": "IN",
   "nationality": "Indian",
   "postal_code": true,
   "unofficial_names": [
     "India",
     "Indien",
     "Inde",
     "インド"
   ],
   "languages_official": [
     "hi",
     "en"
   ],
   "languages_spoken": [
     "hi",
     "en"
   ],
   "geo": {
     "latitude": 20.593684,
     "latitude_dec": "23.4060115814209",
     "longitude": 78.96288,
     "longitude_dec": "79.45809173583984",
     "max_latitude": 35.5087008,
     "max_longitude": 97.3953587,
     "min_latitude": 6.4626999,
     "min_longitude": 68.1097,
     "bounds": {
       "northeast": {
         "lat": 35.5087008,
         "lng": 97.3953587
       },
       "southwest": {
         "lat": 6.4626999,
         "lng": 68.1097
       }
     }
   },
   "currency_code": "INR",
   "start_of_week": "monday"
 }

Utiliser Guzzle

Guzzle est un client HTTP PHP pour l’envoi de requêtes HTTP. C’est une alternative à cURL. Il fournit un code beaucoup plus propre et une meilleure expérience pour les développeurs.

Dans un premier temps, vous devez installer Guzzle à l’aide du compositeur en exécutant la commande :

composer require guzzlehttp/guzzle

Ensuite, écrivez le code ci-dessous qui appelle l’API via Guzzle.

<?php
require_once "vendor/autoload.php";
  
use GuzzleHttpClient;
  
$ip_address = getUserIpAddr();
  
$client = new Client();
  
$response = $client->request('GET', 'https://api.ipgeolocationapi.com/geolocate/'.$ip_address);
  
if($response->getStatusCode() == 200) {
    $body = $response->getBody();
    $arr_body = json_decode($body);
    print_r($arr_body);
}

C’est ainsi que nous obtenons la géolocalisation en utilisant l’adresse IP en PHP. S’il vous plaît partager vos pensées ou suggestions dans la section commentaires ci-dessous.

Articles Liés

Source d’enregistrement: artisansweb.net

Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Plus de détails