Dans cet article, nous allons voir rapidement comment installer le module GeoIP pour PHP. Ce module permet d’avoir des renseignements supplémentaires à partir d’une adresse IP : Pays, Ville, etc…

A quoi cela sert ?

A quoi cela sert d’avoir des informations supplémentaires concernant les adresses IP ? A plusieurs choses lorsque l’on est un webmaster. Localiser ses utilisateurs et notamment un utilisateur particulier permettant d’éviter des fraudes sur le site (paiement, inscription etc…). Proposer des contenus en fonction de la localisation de l’utilisateur (pays ou ville).  Faire ses propres stats, permettant d’avoir une vue plus solide sur l’intérêt de vos utilisateurs (quels utilisateurs ?) par rapport à votre site…Les utilisations peuvent être nombreuses et instructives !

Simple

Il n’y a rien de plus simple concernant l’installation de ce module :
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
mkdir -v /usr/share/GeoIP
mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

apt-get install php5-geoip
On récupère d’abord le fichier contenant les informations sur les IP. C’est la société Maxmind qui fournit ces données. On décompresse ensuite le fichier en question, on créé un répertoire et on copie le dit fichier dans le répertoire nouvellement créé.

On installe ensuite, avec la commande apt-get le module PHP en question. Relancez Apache avec un petit apache2ctl graceful et normalement votre module est opérationnel. Pour le vérifier, il suffit de créer un petit programme PHP qui affichera les informations voulus :

print_r(geoip_record_by_name('google.fr'));

donnera le résultat suivant :

Array ( [country_code] => US [country_code3] => USA [country_name] => United States [region] => CA [city] => Mountain View [postal_code] => 94043 [latitude] => 37.4192008972 [longitude] => -122.057403564 [dma_code] => 807 [area_code] => 650 )

Récupérer l’adresse IP

En PHP vous pouvez récupérer l’adresse IP du visiteur facilement et l’envoyer ensuite dans la fonction geoip, voici le code

if($_SERVER['HTTP_X_FORWARDED_FOR'])
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif($_SERVER['HTTP_CLIENT_IP'])
$ip = $_SERVER['HTTP_CLIENT_IP'];
else
$ip = $_SERVER['REMOTE_ADDR'];

Vous pouvez mettre cela dans une fonction qui vous retournera l’adresse IP du visiteur tout simplement. Maintenant c’est à vous de jouer !