Grâce à la base de données GeoLite de MaxMind on peut localiser un visiteur sur son blog. Seules les IP fixes peuvent être géolocalisées. Les IP dynamiques donneront des résultats très aléatoires.
Avant d’afficher sur votre blog le pays de vos visiteurs, vous devez télécharger la base de données (environ 20 Mo), depuis cette adresse : GeoLiteCity.dat
Utilisation de l’API PHP.
Il est préférable de créer un répertoire geoloc (changer de nom pour éviter les hacks) où l’on mettra tous les fichiers nécessaires à la géolocalisation.
Puis copier le fichier GeoLiteCity.dat dans ce dossier.
Ensuite vous devez télécharger l’API PHP à cette adresse : php-1.11.tar.gz .
Cette archive contient trois fichiers qui nous intéresse :
- geoip.inc
- geoipcity.inc
- geoipregionvars.php
Ces fichiers sont nécessaires pour extraire les informations de la base de données. Copier les également dans le répertoire geoloc de votre hébergement.
Créer maintenant un fichier exemple_geoloc.php (mettez le nom que vous voulez), toujours dans votre répertoire geoloc, avec le code suivant. Avant de l’insérer dans une page WordPress, nous allons tester si cela fonctionne correctement.
<?php include("geoipcity.inc"); include("geoipregionvars.php"); $gi = geoip_open(realpath("GeoLiteCity.dat"),GEOIP_STANDARD); $record = geoip_record_by_addr($gi,$_SERVER['REMOTE_ADDR']); echo $record->country_name . "\n"; echo $GEOIP_REGION_NAME[$record->country_code][$record->region] . "\n"; echo $record->city . "\n"; echo $record->postal_code . "\n"; echo $record->latitude . "\n"; echo $record->longitude . "\n"; geoip_close($gi); ?>
Maintenant aller sur votre site et taper la ligne suivante : http://monsite.com/geoloc/exemple_geoloc.php et vous devriez avoir ceci :
Quelques petites explications.
$record = geoip_record_by_addr($gi,$_SERVER['REMOTE_ADDR']);
Cette ligne permet de créer un objet afin de récupérer toutes les informations de localisation à partir de l’adresse IP publique du visiteur. L’adresse du visiteur est récupérée via la variable ‘REMOTE_ADDR’.
Cette fonction a besoin de deux paramètres :
- la variable contenant l’accès à la base de données ici $gi.
- L’adresse IP à localiser ici ‘REMOTE_ADDR’.
Les informations retournées par la base de données sont :
echo $record->country_name . "\n"; // nom du pays echo $GEOIP_REGION_NAME[$record->country_code][$record->region] . "\n"; // nom de la region echo $record->city . "\n"; // nom de la ville echo $record->postal_code . "\n"; // code postal echo $record->latitude . "\n"; // latitude echo $record->longitude . "\n"; // longitude
Ici dans ce tutoriel, je veux uniquement afficher le pays de provenance de mon visiteur, j’utiliserai donc le code suivant :
<?phpecho geoip_country_name_by_addr($gi, $_SERVER['REMOTE_ADDR']);?>
Intégration dans WordPress.
J’ai dédié une page WordPress à l’affichage de sstatistiques (visiteurs, page vues, page rank, …), vous pouvez la consulter à cette adresse : Statistiques Blog Quick-Tutoriel.
J’améliore constamment cette page, en rajoutant des informations que je récolte via votre navigateur (IP publique, OS, résolution, …) mais aussi des informations sur mon blog (page rank, dernière visite des robots, nombre d’utilisateurs en ligne, …).
Grâce à ce script je vais pouvoir afficher le pays du visiteur.
Vous devez adapter un peu le script à insérer dans une page WordPress.
Voici le script :
include_once ('/home/votre/chemin/geoloc/geoipcity.inc'); include_once ('/home/votre/chemin/geoloc/geoipregionvars.php'); $gi = geoip_open('/home/votre/chemin/geoloc/GeoLiteCity.dat', GEOIP_STANDARD); $record = geoip_record_by_addr($gi,$_SERVER['REMOTE_ADDR']); $pays = $record->country_name; echo " Votre pays de provenance est : <strong>$pays</strong></br>";
J’ai rajouté include_once pour éviter des erreurs PHP. Avec cette fonction on ne recharge pas le fichier si celui-ci est déjà chargé.
Grâce à la base de données GeoLite, voilà ce que cela donne sur ma page de statistiques :
That’s All.