dokuro Posté(e) le 29 janvier 2015 Signaler Share Posté(e) le 29 janvier 2015 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 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 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 : 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 ~ 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é Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
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.