Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
DETERMINER LE PAYS D'UN VISITEUR
Information sur la source
Description
Grace à l'adresse IP du visiteur vous allez pouvoir trouver son pays. Pour faire des stats sur son site c'est génial.
Source
- // D'abord il faut telecharger sur ce site http://ip-to-country.directi.com/ dans la // section download le fichier latest IP-to-Country Database.csv.zip, créer une // table pays dans votre base avec 5 champs, IP_FROM(bigint 10), IP_TO(big // int10),CODE (varchar 5),CODE2 (varchar 5),PAYS (varchar 50).
- // ensuite grace à la fonction ci-dessous, on insère le fichier qu'on a chargé sur // le serveur bien sur.
- // Ensuite on récupère l'adresse IP grace à la fonction GetIP ci-dessous
- // Puis enfin ;-) on lance fonction IpEnPays(GetIp());
- // ou bien on peut afficher echo IpEnPays(GetIp());
-
- //***************************************************
- // Lecture et insertion du fichier ipcountry
- //**********************************************
- function LireFichier()
- {
- $sqllink=mysql_connect ("avec vos paramètres");
- mysql_select_db($sqlDB,$sqllink);
-
- $filename="ipcountry.txt"; // mettez le nom de votre fichier
- // ouverture du fichier
- $fd = fopen( $filename, "r");
- :: Tant qu'on est pas à la fin
- while (!feof($fd))
- {
- // on lit le fichier
- $buffer = fgets($fd,1000);
- // on découpe la chaine lue dans un tableau
- $name=explode(",",$buffer);
- // on enlève les " (on peut faire un boucle for pour éviter les 5lignes)
- $name[0]=str_replace("\"","",$name[0]);
- $name[1]=str_replace("\"","",$name[1]);
- $name[2]=str_replace("\"","",$name[2]);
- $name[3]=str_replace("\"","",$name[3]);
- $name[4]=str_replace("\"","",$name[4]);
- // on insère les valeurs dans la base
- mysql_query ("INSERT INTO pays (IP_FROM,IP_TO,CODE,CODE2,PAYS) values ('".$name[0]."','".$name[1]."','".$name[2]."','".$name[3]."','".$name[4]."')",$sqllink) ;
- }
- fclose ($fd);
-
- mysql_close($sqllink);
-
- }
- //*********************************************************
- // Retourne l'adresse IP du visiteur
- //*********************************************************
- function get_IP() {
-
- // Gestion des proxys
- if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
- $IP = $_SERVER['HTTP_X_FORWARDED_FOR'];
- elseif(isset($_SERVER['HTTP_CLIENT_IP']))
- $IP = $_SERVER['HTTP_CLIENT_IP'];
- else
- $IP = $_SERVER['REMOTE_ADDR'];
-
- return $IP;
- }
- //*********************************************************
- // fonction qui ransforme l'IP en nombre
- //*********************************************************
- function IPAddress2IPNumber($dotted) {
- $dotted = preg_split( "/[.]+/", $dotted);
- $ip = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]);
- return $ip;
- }
-
- //*********************************************************
- // Fonction qui retourne le pays, en paramètre l'adresse IP
- //*********************************************************
- function IpEnPays($uneIp)
- {
- $sqllink=mysql_connect ("avec vos paramètres");
- mysql_select_db($sqlDB,$sqllink);
- // transforme l'ip en nombre
- $uneIp=IPAddress2IPNumber($uneIp);
- $select ="SELECT PAYS FROM pays WHERE ".$uneIp." BETWEEN IP_FROM AND IP_TO ";
- $resPays=mysql_query($select,$sqllink);
- if ($rowPays=mysql_fetch_row($resPays))
- $retour=$rowPays[0];
- else
- $retour="Indeterminé";
-
- mysql_free_result($resPays);
- return $retour;
- }
-
-
// D'abord il faut telecharger sur ce site http://ip-to-country.directi.com/ dans la // section download le fichier latest IP-to-Country Database.csv.zip, créer une // table pays dans votre base avec 5 champs, IP_FROM(bigint 10), IP_TO(big // int10),CODE (varchar 5),CODE2 (varchar 5),PAYS (varchar 50).
// ensuite grace à la fonction ci-dessous, on insère le fichier qu'on a chargé sur // le serveur bien sur.
// Ensuite on récupère l'adresse IP grace à la fonction GetIP ci-dessous
// Puis enfin ;-) on lance fonction IpEnPays(GetIp());
// ou bien on peut afficher echo IpEnPays(GetIp());
//***************************************************
// Lecture et insertion du fichier ipcountry
//**********************************************
function LireFichier()
{
$sqllink=mysql_connect ("avec vos paramètres");
mysql_select_db($sqlDB,$sqllink);
$filename="ipcountry.txt"; // mettez le nom de votre fichier
// ouverture du fichier
$fd = fopen( $filename, "r");
:: Tant qu'on est pas à la fin
while (!feof($fd))
{
// on lit le fichier
$buffer = fgets($fd,1000);
// on découpe la chaine lue dans un tableau
$name=explode(",",$buffer);
// on enlève les " (on peut faire un boucle for pour éviter les 5lignes)
$name[0]=str_replace("\"","",$name[0]);
$name[1]=str_replace("\"","",$name[1]);
$name[2]=str_replace("\"","",$name[2]);
$name[3]=str_replace("\"","",$name[3]);
$name[4]=str_replace("\"","",$name[4]);
// on insère les valeurs dans la base
mysql_query ("INSERT INTO pays (IP_FROM,IP_TO,CODE,CODE2,PAYS) values ('".$name[0]."','".$name[1]."','".$name[2]."','".$name[3]."','".$name[4]."')",$sqllink) ;
}
fclose ($fd);
mysql_close($sqllink);
}
//*********************************************************
// Retourne l'adresse IP du visiteur
//*********************************************************
function get_IP() {
// Gestion des proxys
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$IP = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(isset($_SERVER['HTTP_CLIENT_IP']))
$IP = $_SERVER['HTTP_CLIENT_IP'];
else
$IP = $_SERVER['REMOTE_ADDR'];
return $IP;
}
//*********************************************************
// fonction qui ransforme l'IP en nombre
//*********************************************************
function IPAddress2IPNumber($dotted) {
$dotted = preg_split( "/[.]+/", $dotted);
$ip = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]);
return $ip;
}
//*********************************************************
// Fonction qui retourne le pays, en paramètre l'adresse IP
//*********************************************************
function IpEnPays($uneIp)
{
$sqllink=mysql_connect ("avec vos paramètres");
mysql_select_db($sqlDB,$sqllink);
// transforme l'ip en nombre
$uneIp=IPAddress2IPNumber($uneIp);
$select ="SELECT PAYS FROM pays WHERE ".$uneIp." BETWEEN IP_FROM AND IP_TO ";
$resPays=mysql_query($select,$sqllink);
if ($rowPays=mysql_fetch_row($resPays))
$retour=$rowPays[0];
else
$retour="Indeterminé";
mysql_free_result($resPays);
return $retour;
}
Conclusion
Les pays sont en Anglais, il faut juste les mettre à jour manuellement ,(une petite demi-heure.) Ce n'est pas trop compliqué à faire , et cela marche relativement bien, j'ai comparé avec xiti, j'obtiens quasiment les mêmes résultats. N'hesitez pas à me contacter si vous avez des problèmes, le plus dur c'est d'inserer le fichier ipcountry dans votre base
Sources de la même categorie
Commentaires
|
|