Une API pour géolocaliser une adresse IP

freegeoip.net est une API REST publique permettant de géolocaliser une adresse IP (ou un nom de domaine). L'API est limitée à 10000 appels par heures (ce qui semble suffisant), cependant, si vous souhaitez outrepasser cette limite, vous pouvez héberger vous-même ce service puisque freegeoip est open source. Vous trouverez les sources sur GitHub.

S'agissant d'un webservice REST, l'utilisation est très simple, il vous suffti d'appeller l'URL suivante :

	freegeoip.net/{format}/{ip_ou_nom_de_domaine}

Les formats supportés sont: JSON, CSV, et XML.

Voici un petit snippet permettant d'appeler ce service en CURL:

    //test sur une IP de google
    $api = 'http://freegeoip.net/json/173.194.67.94';
    
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $api);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
    $data = curl_exec($curl);
    curl_close($curl);

Voici la chaine JSON récupérée :

{"ip":"173.194.67.94","country_code":"US","country_name":"United States","region_code":"CA","region_name":"California","city":"Mountain View","zipcode":"94043","latitude":37.4192,"longitude":-122.0574,"metro_code":"807","areacode":"650"}

Vous n'avez plus qu'à modifier le code ci-dessus pour l'intégrer dans une fonction et voilà, le tour est joué ! En retournant "json_decode($data)" vous obtiendrez un objet avec les attributs suivants : ip, country_code, country_name, region_code, region_name, city, zipcode, latitude, longitude, metro_code, area_code.

Ce petit service va vous permettre, par exemple, de personnaliser votre site web en fonction de la localisation de vos visiteurs (langue par défaut, indicatif téléphonique, affichage d'un drapeau etc.).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

code