Aller au contenu
Couillaman le site une demo bientot ! ×

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


dokuro
 Share

Messages recommandés

Introduction

Lorsque l on possède un site, il est bien sur ouvert au monde entier, il peut être interessant 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 probleme majeur dans ce type de solution reste le temps de latence entre la demande et le resultat 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 meme 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 merite 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

 

gunzip GeoLiteCity.dat.gz
mkdir  /usr/share/GeoIP
mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Maintenant on installe la librerie 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 verifie avec un phpinfo qui devrait vous donnez cela :
geoip_phpinfo.png

Utilisation

L utilisation de la bibliotheque 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 ~
gunzip GeoLiteCity.dat.gz
mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Voila le tour est joué

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

 Share

×
×
  • Créer...