Trouver le pays d'un utilisateur

Résolu/Fermé
xidy - 3 nov. 2009 à 14:51
 xidy - 3 nov. 2009 à 16:14
Bonjour,
et merci d'avance^^

J'ai un problème pour trouver le nom du pays des gens visitant mon site internet je vous passe le code si quelqu'un cerne l'erreur merci^^

$pays="33.99.63.44";

$pays=str_replace(".","",$REMOTE_ADDR);

$pays=(double)$pays;

$valeur= mysql_query("SELECT COUNTRY_NAME FROM IP_PAYS WHERE \'".$pays."\' BETWEEN \'IP_FROM\' and \'IP_TO\'",$conn);

while ($row = mysql_fetch_row($valeur))
{
echo $row[0];
}

9 réponses

Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
3 nov. 2009 à 15:23
Ok, par contre je connais pas trop ta syntaxe du between, et je ne vois pas pourquoi tu échappes ces simples quotes.
Perso je l'aurai écrite :

$sSql = " SELECT COUNTRY_NAME
FROM `IP_PAYS`
WHERE
`IP_FROM` <= '".$pays."'
AND
`IP_TO` >= '".$pays."'
";

1
Scrapitoo1.0 Messages postés 93 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 21 mai 2010 12
3 nov. 2009 à 15:33
Bonjour,

s'agit t-il du fichier iptocountry.csv que tu as utilisé ?
Si oui, les "ip" contenues dans la tables n'en sont pas. C'est le résultat d'un calcul à partir des 4 parties de l'ip.
ex pour un ip du style AAA.BBB.CCC.DDD il faut calculer :
AAA x 256^3 + BBB x 256 ^2 + CCC x 256 + DDD
et c'est cette valeur qu'il faut comparer aux IPFROM et IPTO.

Bonne journée
0
Utilisateur anonyme
3 nov. 2009 à 14:53
Lu,
ils n'ont pas un profil sur ton site ? tu peux pas regarder leur pays de là-bas ?
et pourquoi veux-tu à tout prix savoir leur pays?
0
dyllan Messages postés 4694 Date d'inscription mardi 9 janvier 2007 Statut Contributeur sécurité Dernière intervention 25 juin 2019 919
3 nov. 2009 à 14:53
Bonjour,
je ne suis pas très bon en dev. mais pour contourner le problème et pour trouver le pays de tes visiteurs tu peux aussi simplement passé par PHPMyvisites.

Si ça peut t'aider,

dyllan
0
J'aimerais avoir le pays pour simple information (outil d'analyse) mais si possible le coder moi-même et eviter google analytics ou autre (but pédagogique dans ce cas). Merci!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
3 nov. 2009 à 15:03
Ta requête me parait bien étrange...
Tu veux pas faire :

$sSql = "SELECT COUNTRY_NAME FROM IP_PAYS WHERE \'".$pays."\' BETWEEN \'IP_FROM\' and \'IP_TO\'";
echo "<br/>on va éxécuter : ".$sSql;
$valeur= mysql_query($sSql,$conn) or die ('error '.mysql_error());

Et dis moi ce que ça t'affiches.
Puis comme ça, t'as bien une table IP_PAYS ? ? //Si oui montre la structure
Et t'as des enregistrements dedans ?
Un par adresse IP sans les points ? ? ? //ca parait irréel
Car c'est ce que ta requête demande...
0
Si on a les IP par pays sans les points (par rangs: de ... à ...) dans une table.
0
En effet j'ai retiré les quotes pour ceci:

$valeur= mysql_query("SELECT * FROM IP_PAYS WHERE \'".$pays."\' BETWEEN IP_FROM and IP_TO",$conn);

mais je ne comprends pas la syntaxe avec les => et >=.

J'ai une erreur de type:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\wamp\www\4Gl\4glOnNet\fct.php

lors du:
while ($row = mysql_fetch_row($valeur))
{
echo $row[0];
}
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
3 nov. 2009 à 15:41
Fais un mysql_query("SELECT * FROM IP_PAYS WHERE \'".$pays."\' BETWEEN IP_FROM and IP_TO",$conn) or die('ERROR SQL : '.mysql_error() );

Il doit y avoir une erreur de syntaxe de requête. D'ailleurs ça ne sert toujours à rien d'échapper les simple quotes pour le pays, il vaut mieux écrire :

"SELECT * FROM IP_PAYS WHERE '".$pays."' BETWEEN IP_FROM and IP_TO"


Pour ce qui est des <= et => c'est pour faire le between c'est du "inférieur ou égal" à et "supérieur ou égal à"
0
Ah ok j'avais pas pensé à ce sens là en lisant^^ On a resolu le probleme en changeant un type ds le record de la bd :S merci à tous!!!
0