Probleme pour un script ip to country

  • Auteur de la discussion Auteur de la discussion yvann94
  • Date de début Date de début
WRInaute discret
Bonjour à tous,

J'ai un problème avec un script assez simple, mais je ne vois pas où est ce problème...

Voici le code :
<code type="php"> /* extraction adresse IP du visiteur */
$ip = $_SERVER['REMOTE_ADDR'];
/* transformation IP */
$dotted = preg_split( "/[.]+/", $ip);
$ipdeux = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]);
echo $ipdeux;

[connexion à la base de données]...

$select = mysql_query('SELECT COUNTRY_NAME FROM ip-to-country WHERE $ipdeux BETWEEN `IP_FROM` AND `IP_TO`');

$row = mysql_fetch_array($select) or die (mysql_error($select));
echo $row;

</code>


Et il me retourne Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in


Quelqu'un pourrait m'éclairer ?


Merci d'avance.
 
WRInaute accro
tu devrais jeter un oeil sur maxmind ... j'avais commencer a utiliser iptocountry avec le meme type de recherche un peu chiante puisque sur deux critères plage ip deb et fin ... les multiplications par 256 puissanec 1 2 3 etc

Avec maxmind et fichier binaire, tout est beaucoup plus simple et rapide (tant à coder, implanter qu'a executer).

A mon avis.
 
WRInaute discret
Ok je vais voir ça...mais je pense qu'il doit juste y avoir une petite erreur pour le script ci-dessus.
 
WRInaute accro
yvann94 a dit:
Ok je vais voir ça...mais je pense qu'il doit juste y avoir une petite erreur pour le script ci-dessus.
Meme une fois le bug trouve, tu devrais faire le constat que iptocountry c'est lourdingue a trimbaler par rapport a maxmind (en plus il y a plein d'ip ou le premier etait dna sles choux alors que maxmind semble plus complet). Notamment des IP en afrique du sud (que itc semble ignorer total ..).
 
WRInaute passionné
Bonjour,

j'ai une question car je suis un peu dérouté : pourquoi ne pas utiliser les variables d'environnement GEOIP? C'est installé sur de plus en plus de serveurs en mutualisé, et pas très compliqué à installer sur un dédié Apache.
 
WRInaute occasionnel
hello,

tu dois avoir une erreur SQL. Enlève le $select dans mysql_error()
mysql_error prend en paramètre le lien vers la connexion courante et non la ressource d'exécution.
 
WRInaute accro
C'est non seulement moins simple mais aussi moins fiable que maxmind qui est un modele du genre en matière de facilité, de vitesse et de fiabilité. Désolé pour IPTC ...
 
Discussions similaires
Haut