×

Géolocalisation de vos visiteurs grâce à leur ip et a php

Géolocalisation de vos visiteurs grâce à leur ip et a php

Introduction

Lorsque l on possède un site, il est bien sur ouvert au monde entier, il peut être intéressant de savoir de quels pays viennent les internautes pour par exemple :

  • leur fournir un contenu différent
  • afficher le site dans la bonne langue…

Il existe de multiples solutions, gratuites ou payantes.

On peut acheter une base de donnée ou passer par des webservices.

Les webservices

Le problème majeur dans ce type de solution reste le temps de latence entre la demande et le résultat ce qui peut donc ralentir grandement votre site. De plus vous êtes tributaire d’un prestataire qui peut très bien avoir une coupure de service ou même carrément tout arrêter du jour au lendemain.

Les bases de donnée.

Solution bien souvent payante mais qui a l avantage d être plus rapide. elle peut néanmoins consommer pas mal de ressources suivant sur votre site.

La solution !!!

A force de recherche j ai fini par trouver une vrai solution efficace qui mérite d être connue!!
Il existe une bibliothèque native dans php qui fait ce travail : geoip !!!

Je vais donc vous montrer comment la mettre sous php5 sur une Debian et l accoupler avec une banque de donnée gratuite de maxmind que nous mettrons a jour grâce à un cron.

Installation

Allez c est parti pour un tour, on va commencer par récupérer la base de donnée d ip par pays disponible via maxmind

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
mkdir  /usr/share/GeoIP
mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Maintenant on installe la librairie qu il nous faut

apt-get update
apt-get install php5-geoip

Il nous reste plus qu a faire une petite configuration dans le fichier .ini de geoip

echo "geoip.custom_directory = /usr/share/GeoIP" >> /etc/php5/conf.d/geoip.ini

On reload apache

/etc/init.d/apache2 restart

On vérifie avec un phpinfo qui devrait vous donnez cela :phpinfo avec geoip

Utilisation

L utilisation de la bibliothèque est très très simple je vous renvoie à la doc sur le site php pour plus d info :

http://www.php.net/manual/fr/book.geoip.php

Voici un exemple très simple pour tester :

echo "<pre>";
print_r(geoip_record_by_name($_SERVER['REMOTE_ADDR']));
echo "</pre>";

Qui donne le résultat suivant :
Array
(
[continent_code] => EU
[country_code] => FR
[country_code3] => FRA
[country_name] => France
[region] =>
[city] =>
[postal_code] =>
[latitude] => 46
[longitude] => 2
[dma_code] => 0
[area_code] => 0
)

Et le tour est joué. Cette base est gratuite et ne possède pas beaucoup de donnée mais vous pouvez très bien avoir plus d information avec une base payante.

Mise à jour

Maintenant que tout cela marche bien il est temps de mettre tout cela à jour de manière automatique grâce a un cron

Perso moi je veux faire la mise a jour une fois par semaine

touch /etc/cron.weekly/geoip_update.sh
chmod a+x  /etc/cron.weekly/geoip_update.sh

Editez le fichier et coller les lignes suivantes

cd ~
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Voila le tour est joué

2 comments

comments user
wex

Bonjour,
Je recherche quelqu’un pour installer sur un site une commande GEOIP
simple pour PHP5. Deux zones seulement, ( FR et reste du monde )
pour deux redirections.

Payement par paypal possible.

Urgent
Merci
jd( ) weex org

comments user
admin

faudrait savoir si tu es sur un serveur mutualisé ou dedié et quel os tourne dessus

Laisser un commentaire