Géolocaliser vos visiteurs grâce à GeoLite.

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é.

J’utilise le plugin Exec_PHP pour exécuter du code PHP dans une page WordPress.

Grâce à la base de données GeoLite,  voilà ce que cela donne sur ma page de statistiques :

That’s All.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *