Cet article propose une traduction française de la base de données IP-to-Country, permettant de relier une adresse IP à un pays. Cet article est la suite logique du précédent article publié sur ce blog, intitulé « Connaître le pays d’une adresse IP« .
Présentation
Le souci majeur de la base de données de IP-to-Country, c’est qu’elle est exclusivement en anglais et que les noms de pays sont tous en majuscules (ce qui réduit la lisibilité et diminue le professionnalisme). Pour remédier à ces soucis j’ai créé une seconde base de données de traduction, permettant de réellement pouvoir utiliser IP-to-Country sur des sites web francophones.
Intérêt
Cette seconde base de données SQL est plus simple que la base de données de IP-to-Country pour la simple raison qu’elle recense les pays et non les adresses IP.
Sachant que IP-to-Country met à jours sa base de données assez régulièrement, ce serait une énorme perte de temps de traduire chaque nouvelles versions. Cette traduction à alors l’avantage d’être de bonne qualité à travers le temps. Pour mettre à jour les données, il faudra juste mettre à jour la base de données de IP-to-Country.
(Base de données SQL de 7,99Ko)
Exemple d’utilisation
Grâce à cette traduction, il est possible de créer un code PHP qui indique le pays d’origine d’un visiteur. Le tout étant bien évidemment en français. Le code ci-dessous utilise PHP 5 pour réaliser une telle application.
<?php /* Message de copyright obligatoire: "This 'work' uses the IP-to-Country Database provided by WebHosting.Info (http://www.webhosting.info), available from http://ip-to-country.webhosting.info." */ // Connexion à la base de donnée (à adapter) $link = mysqli_connect("localhost", "my_user", "my_password", "my_db"); // Fonction permettant de convertir l'adresse IP en un format numérique function ipAdressNumber($dotted){ $dotted = preg_split( "/[.]+/", $dotted); $ip = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]); // IP Number = A x (256*256*256) + B x (256*256) + C x 256 + D return $ip; } $ip = $_SERVER['REMOTE_ADDR']; // Adresse IP du visiteur echo 'Adresse IP: '.$ip.'<br />'; $ip = ipAdressNumber($ip); // Utilisation de la fonction pour convertir l'adresse IP // Sélection des données dans la base de données. Si l'IP est comprise entre IP_FROM et IP_TO $result = mysqli_query($link, "SELECT * FROM ip_to_country WHERE $ip BETWEEN IP_FROM AND IP_TO ") or die (mysqli_error($link)); $data = mysqli_fetch_array($result); // $data['COUNTRY_NAME'] contient le nom du pays en Anglais // Utilisation de la seconde base de données pour traduire le nom du pays $result2 = mysqli_query($link, "SELECT COUNTRY_NAME_FR FROM ip_pays_fr WHERE COUNTRY_NAME='".addslashes($data['COUNTRY_NAME'])."' ") or die (mysqli_error($link)); $data2 = mysqli_fetch_array($result2); echo 'Pays: <strong>'.$data2['COUNTRY_NAME_FR'].'</strong>'; // Affichage du pays du visiteur (en français) mysqli_close($link); ?>
Mot de la fin
Pour voir un exemple concret de l’application de cette base de données, je vous recommande de consulter la page « Mon adresse IP » du site InfoWebMaster. Cette dernière indique l’adresse IP de l’utilisateur ainsi que quelques petites informations supplémentaires.