J’ai récemment installé PhpMyVisites en vu de le tester sur la totalité de blogs de Asslema.
J’ai réussi à intégrer les bases de données. C’est ce que je voulais. Chaque blog a ses statistiques à part. Ensuite, il fallait procéder à l’installation du code de suivi sur chaque blog. C’est fait par ajout d’un simple fonction php.
En suivant l’évolution des statistiques et comparaison avec les données de Google Analytics, j’ai remarqué que PhpMyVisites ne reconnaît pas les pays africains dont la Tunisie bien sur.
Dans le fichier core/include/Log.functions.php j’ai pu voir un algorithme assez bizarre pour reconnaître les pays. Le script fait appel à la langue du navigateur ? Si mon FireFox est en français, ça ne veut pas dire que je suis en France. Je me renseigne sur la faq, je trouve :
phpMyVisites regarde d’abord l’extension du hostname du fournisseur d’accès (Pour wanadoo.fr par exemple, l’extension est “fr”). Quand cette extension est celle d’un pays précis, le visiteur est forcément de ce pays. Si cette extension est “net”, “com” ou “org”, on regarde alors la langue du navigateur ! Si la langue du navig est du type “fr-XX” ou “en-XX” on regarde le “XX”, etc. ; sinon on prend le pays comme étant la langue du navigateur.
Cet algorithme n’est pas à l’abris d’erreurs de jugement, mais elles sont négligeables (5% maximum sur une période significative).
Alors là je ne suis pas du tout d’accord. Peut être pour un site fréquenté par des français mais pas pour nous. Ce sont plus 61,5% de visites non identifiées pour mon blog. C’est beaucoup trop.
Ensuite ils disent :
De plus cette méthode, contrairement à celle qui analyse des tables d’IP classées par pays, a le mérite d’être rapide, simple et légère à mettre en oeuvre (pas de base de données à maintenir à jour, pas d’espace disque utilisé, etc.).
Pour plus de détail voir la fonction function getCountry dans le fichier core/include/Log.functions.php
Eh oui, je l’ai déja vu ce fichier et il y a bien d’autres méthodes de localisation sans bases de données supplémentaires.
La solution,
Télécharger ce fichier zip.
Envoyer son contenu à /core/include/
Dans le fichier core/include/Log.functions.php trouver la fonction getCountry().
Supprimer cette fonction (toutes les lignes entre la 153 et la 254) et la remplacer par :
function iptocountry($ip) {
$numbers = preg_split( “/\./”, $ip);
include(“ip_files/”.$numbers[0].”.php”);
$code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]);foreach($ranges as $key => $value){
if($key=$code){$country=$ranges[$key][1];break;}
}
}
if ($country==”"){$country=”xx”;}
return $country;
}function getCountry($host, $lang)
{$adresse=$_SERVER['REMOTE_ADDR'];
$domain=strtolower(iptocountry($adresse));if(isset($GLOBALS['countryList'][$domain][0]))
{
return $domain;
} else {
return “xx”;
}
}
Voilà,
Je commence à voir des TN apparaître dans les stats
Le seul souci que j’ai c’est que je gère un site qui est au sénégal ,
j’ai implémenté ton script mais je vois pas les visiteur du senegal est ce que tu peux m’aider dans ce sens.