Trouver la géolocalisation à l’aide d’une adresse IP gratuitement en PHP
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
- Laravel Geoip Library – Découvrez la géolocalisation à l’aide de l’adresse IP
- Comment obtenir la géolocalisation depuis IP en PHP
- Comment utiliser Guzzle – Un client HTTP PHP pour envoyer des requêtes HTTP