Base de données ville/IP

  • Auteur de la discussion Auteur de la discussion sim100
  • Date de début Date de début
WRInaute passionné
Bonjour,
Je cherche une base de données, gratuite :), des villes de France et IP.
Afin que que lorsqu'un visiteur passe, je lui indique sa ville...enfin je veux en faire un peu plus en fait.

Je sais que ça existe, du moins en payant, mais y a t-il une base sympas et correcte, gratuite, même si toutes les villes n'y sont pas ?

Merci beaucoup
 
WRInaute accro
je confirme. tres bien maxmind. Par contre attention, tu as le monde entier et ca fait quelque chose comme 5 millions de record (1 par plage IP) ... donc a toi de faire le tri si tu veux pas tout garder en ligne ...
 
WRInaute passionné
Merci jcaron
Cela dit, je n'arrive pas à le faire marcher leur truc, j'ai des erreur, pourtant je suis l'exemple tout fait dans leur manuel :(

Pas grave
 
WRInaute accro
Ce serait probablement plus facile si tu nous disais le message d'erreur que tu obtiens, j'ai oublié ma boule de cristal au vestiaire.

Jacques.
 
WRInaute accro
Euh... Justement tu n'as pas besoin de serveur SQL... Il faut juste le fichier binaire de maxmind, et que l'extension geoip pour php soit installée...

Jacques.
 
WRInaute accro
jcaron a dit:
Euh... Justement tu n'as pas besoin de serveur SQL... Il faut juste le fichier binaire de maxmind, et que l'extension geoip pour php soit installée...

Jacques.
oui mais base de donnees non php non plus :mrgreen: Bref pas eu le choix d'un mega import ...
 
WRInaute accro
Quelques possibilités:
- tu utilises l'API "pure php" alors que l'extension est déjà installée. Enlève la ligne include("geoipcity.inc") et probablement l'autre include, et ça devrait marcher tout seul.
- tu inclus plusieurs fois geoip.inc (par exemple tu as mis un include dans une boucle).

Jacques.
 
WRInaute passionné
Ca ne marche pas, merci pour l'aide.

Alors j'ai dans mon fichier PHP simplement:

Code:
include("GeoIP/geoip.inc");

$gi = geoip_open("GeoIP/GeoLiteCity.dat",GEOIP_STANDARD);

echo geoip_country_code_by_addr($gi, "24.24.24.24") . "\t" . geoip_country_name_by_addr($gi, "24.24.24.24") . "\n";
echo geoip_country_code_by_addr($gi, "80.24.24.24") . "\t" . geoip_country_name_by_addr($gi, "80.24.24.24") . "\n";

geoip_close($gi);

Et j'ai un dossier GeoIP avec dedans
geoip.inc
geoipcity.inc
geoipregionvars.php
GeoLiteCity.dat

Voila, je suis juste la notice.

Ai-je fais une erreur ?

Merci
 
WRInaute accro
Faudrait voir si le chemin du fichier GeoIP est bon... Mets le chemin absolu, c'est probablement plus sûr comme ça.

Jacques.
 
WRInaute passionné
Non ca ne marche toujours pas :(
J'ai ça
Fatal error: Call to undefined function geoip_open() in /public_html/departements.php on line 92

Pourtant ca avait l'air tout simple!
 
WRInaute accro
Donc tu n'as pas "que ça" dans ton fichier php (puisqu'il trouve l'erreur à la ligne 92). Commence par faire un fichier php qui ne contient vraiment que les appels à geoip, et essaie avec et sans le include.

Jacques.
 
WRInaute passionné
Le reste ce n'est rien :)
Cela dit j'ai fait un fichier à part avec juste le code nécessaire, pour être sur...

J'ai la même erreur. Je ne comprends pas. J'ai tout essayé, rien ne marche :(
 
WRInaute accro
A mon avis tu dois avoir un chemin d'acces qui foire quelque part ... J'ai installé le fichier binaire hier et ca a marche impec du premier coup ... Peut etre le nom de dossier dans le chemin d'acces ... Par defaut il y a Geoip alors que le dossier que tu recupere se nomme Geopip.data ou un truc comme ca ... donc j'ai simplement renommé le dossier Geoip (je parle du dossier pas du fichier qui est dedans)
 
WRInaute passionné
Non le dossier est bon, je l'avais créé manuellement

Par contre pour

$gi = geoip_open("/usr/local/share/GeoIP/GeoLiteCity.dat",GEOIP_STANDARD);

C'est quoi le chemin qu'il faut mettre?
J'ai essayé juste

$gi = geoip_open("/GeoIP/GeoLiteCity.dat",GEOIP_STANDARD);

et

$gi = geoip_open("http://www.....com/GeoIP/GeoLiteCity.dat",GEOIP_STANDARD);

Rien ne marche
 
WRInaute accro
Ben... Le chemin d'accès à ton fichier sur ton serveur. Probablement un truc du genre /home/monsite/www/GeoIP/GeoLiteCity.dat...

Jacques.
 
WRInaute accro
"echo getcwd()" devrait te donner une idée de ta racine. A partir de là, ça dépend d'où tu as mis les fichiers en question...

Jacques.
 
WRInaute accro
sim100 a dit:
Comment je le connais ? je suis chez sivit en mutu

Merci

Code:
$gi = geoip_open($_SERVER["DOCUMENT_ROOT"]."/Geoip/.....);

et la ca marchera ... (si tu as mis le dossier geoip à la racine dans ton www - sinon tu ajoutes ce qu'il faut :

Code:
$gi = geoip_open($_SERVER["DOCUMENT_ROOT"]."/tondossier/Geoip/.....);
 
WRInaute passionné
WRInaute accro
en tout cas ca evolue ... avec le $-server maintenant ton chemin semble ok ... le message d'erreur est desormais différent. Tu as du faire un autre grenouillage quelque part ... comme te l'as dit jcarron, fait test test avec le code fournis en exemple alors que la ligne 376 ca veut dire que avant meme de faire mparcher tu as intégré dans ton code.
 
WRInaute accro
Tu n'as strictement que les 10 lignes dans le readme dans ton fichier php? Et si tu vires le include, ça donne quoi?

Tu peux faire un .php avec un phpinfo() dedans, et nous donner le résultat?

Jacques.
 
WRInaute passionné
J'ai fais un ficher test.php à part
et idem, même erreur

Fatal error: Cannot redeclare geoip_country_code_by_name() in /public_html/GeoIP/geoip.inc on line 376


Si je mets le include en commentaire, alors j'ai cette erreur

Fatal error: Call to undefined function geoip_open() in /public_html/test.php on line 6
 
WRInaute accro
phpinfo nous dit que l'extension geoip est déjà installée, donc pas besoin du include qui essaie de redéfinir certaines fonctions qui sont déjà définies par l'extension.

Mais la syntaxe n'est pas exactement la même, tu n'as pas besoin de faire un geoip_open, tu fais directement des appels aux fonctions geoip_* sans avoir besoin de passer un handle. Les fonctions disponibles sont ici:

http://php.net/manual/en/book.geoip.php

Par contre il part du principe que les bases de données GeoIP sont à un endroit fixe, probablement hors de portée.

L'autre solution consiste à utiliser le geoip.inc, mais de le modifier légèrement pour qu'il n'y ait pas de conflit avec l'extension geoip, en renommant geoip_country_code_by_name en geoip2_country_code_by_name par exemple (et pareil dans les appels, et pareil pour les autres fonctions qui génèrent ce type de conflit).

Jacques.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut