Traduction base de données IP/Pays

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

Base de données pays

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.

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.