Comment utiliser notre API pour une geolocalisation IP

 

 

Bon je vous l’accorde API est encore un grand mot. Mais vu la somme de travail qu’il a fallut pour arriver déjà là on s’est dit qu’il serait sympa de vous en faire profiter de suite et de la faire évoluer ensuite.

Alors comme on l’a dit dans plusieurs autres billets il faut tout d’abord s’inscrire sur geolocalise-ip pour opuvoir intéroger l’API en distant. Vous pouvez tout de même interroger notre base via notre formulaire sans inscription.

Voici un exemple en PHP pour interroger l’API :


// -- ATTENTION  POUR CETTE VERSION `allow_url_fopen = On` DANS LE php.ini
$ville="";
$region="";
$cp="";
$insee="";
$c_region="";
$lt="";
$lg="";
$eloi="";
$pays="";
$abr="";
$flag=""; // -- URL du drapeau du pays correspondant sur geolocalise-ip.com, 
// ex : https://www.geolocalise-ip.com/flags/FR.png
$host="";
$tld="";
$fai="";
$rhost="";
$erreur=0;
function getresultip($ip,$email,$pass){	
	global $erreur;
	global $result;
	$tab_result = array();
	$urlb = "http://www.geolocalise-ip.com/api.php";
	//$url = $urlb."?email=".$email."&pass=".$pass."&ip=".$ip;
	$url = $urlb."?email=".urlencode($email)."&pass=".urlencode($pass)."&ip=".$ip;
	$result = file_get_contents($url);
	if($result!=false && $result!=""){
		$tab_result_temp = split("&",$result);
		if(is_array($tab_result_temp)){
			if(sizeof($tab_result_temp)>0){
				foreach($tab_result_temp as $val){
					$tb_v_temp = split("=",$val);
					$tab_result[$tb_v_temp[0]] = $tb_v_temp[1];
				}
			}else{
				$erreur=1;
			}
		}else{
			$erreur=1;
		}
		foreach($tab_result as $key => $val){
			if($key!="")
				global ${$key};
				${$key}=$val;
		}
	}else{
		$erreur=1;
	}
}

function getresultipCURL($ip,$email,$pass){
	global $erreur;
	global $result;
	$tab_result = array();
	$urlb = "https://www.geolocalise-ip.com/api.php";
	//$url = $urlb."?email=".$email."&pass=".$pass."&ip=".$ip;
	$url = $urlb."?email=".urlencode($email)."&pass=".urlencode($pass)."&ip=".$ip;
	$c = curl_init();
	curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($c, CURLOPT_URL, $url);
	$result = curl_exec($c);
	curl_close($c);

	if ($result){
		$tab_result_temp = split("&",$result);
		if(is_array($tab_result_temp)){
			if(sizeof($tab_result_temp)>0){
				foreach($tab_result_temp as $val){
					$tb_v_temp = split("=",$val);
					$tab_result[$tb_v_temp[0]] = $tb_v_temp[1];
				}
			}else{
				$erreur=1;
			}
		}else{
			$erreur=1;
		}
		foreach($tab_result as $key => $val){
			if($key!="")
				global ${$key};
				${$key}=$val;
		}
	}else{
		$erreur=1;
	}
}


Vous n’avez plus à la suite qu’à faire un echo des variables qui vous interressent, bien évidement elles ne sont pas toutes renseignées en fonction de l’IP demandée.

Très vite nous allons mettre en place une génération XML et JSON pour pouvoir l’utiliser avec du Javascript.
Voilà ce service est pour le moment délivrer à titre expérimentale et nous ne garantissons pas la fiabilité des données fournies.

P.S. : pour le moment ne connaissant pas le traffic que cela va générer sur notre serveur, nous avons donc limité à 50 requêtes par jour et par utilisateur, veuillez nous contacter pour une démarche commerciale.

Scripts géolocalisation Ip à télécharger

Téléchargez un exemple complet d’utilisation de l’API en PHP pour la géolocalisation Ip

Téléchargez un exemple complet d’utilisation de l’API en PHP pour la géolocalisation Ip V2 avec la version CURL

Téléchargez un exemple de compteur en PHP (dans un fichier texte)

Téléchargez un exemple de compteur en PHP (dans une table MySQL) Un grand merci à Jean-Luc pour ce script.

Téléchargez un exemple de compteur en PHP et MySQL Encore un grand merci à Jean-Luc pour ce nouveau script.

4 réponses sur “Comment utiliser notre API pour une geolocalisation IP”

  1. je trouve votre api trés intéressante mais malheureusement je sais pas comment l’utiliser sur mon site. je veux afficher la ville mais je ne comprend pas où il faut renseigner mon mail et pass pour interroger
    votre base de donnée. ça sera sympa si vous pouvez m’envoyer un exemple avec les champs qui faut mettre dans le script, car moi je récupère une chaine vide pour la ville avec echo $ville.

  2. Salut moiiga, J’ai fait un ZIP avec un fichier PHP plus complet que l’exemple donné ci dessus.
    Dans ce script en PHP tu trouveras 2 champs à renseigner pour faire un test : votrelogin (c’est ton adresse email) et votremotdepasse (c’est le mot de passe que tu as renseigné lors de l’inscription). Donnes nous des nouvelles pour savoir si cela te semble plus simple ?!

  3. Bonjour votre idée est très intéressante

    par contre je n’arrive pas faire marcher votre exemple

    j’ai vérifié que le paramétrage allow_url_fopen = On chez mon provider (OVH)
    je me suis inscrit
    j’ai téléchargé le ZIP
    j’ai inscrit les infos dans le fichier Php
    je vois la page php mais quand je clique sur le bouton rien ne se passe

    mon test est ici
    http://www.pebrier.com/src.php

    merci bob

  4. Salut Bob,
    ta configuration doit être bonne, par contre je pense que tu as dû utiliser des caractères qui nécessite un encodage URL dans tes identifiants.
    Je pense que si dans le script que tu as téléchargé tu remplces la ligne :

    • $url = $urlb. »?email= ».$email. »&pass= ».$pass. »&ip= ».$ip;
      Par
    • $urlb. »?email= ».urlencode($email). »&pass= ».urlencode($pass). »&ip= ».$ip

    cela devrait fonctionner. Tiens nous au jus.

    P.S. : J’ai effacé ton lien vers ton PHPInfo.

  5. super ça marche bien et c’est assez génial
    bravo pour votre travail

    je vais essayer de faire une fonction Php pour placer ça dans une table mysql

    je vous enverrai le script quand j’aurai fini si vous voulez

    bob

  6. Bonjour ,

    je suis a la recherche de script pour finir mon mod
    pour les forum Phpbb
    ce mods consiste a blocké les aspirateur de site et intrusion ;

    mais mon mods et incomplet , car je voudrais inclure quel que Option supplémentaire , qui seul vous , avais la possibilité de m’aidée …….
    mes Option :
    //////////////////////////////
    // Unique Identification
    // nom de la machine
    // port
    // Votre adresse IP de connexion à Internet
    // Donne la date et l’heure
    // Adresse IP de votre proxy
    // url de provenance
    // langage du navigateur
    // Navigateur + System
    // Récupère l’IP derrière proxy et le FAI du visiteur (même si proxy)
    // Enregistre les données
    //////////////////////////////////
    avec vos option :
    Ville :Région :Code postal :Code INSEE :Coderégion :Latitude :Longitude :Eloignement :TLD :FAI

  7. Bonjour sync,
    Nous sommes flattés mais ne nous sommes pas aussi bon que ça tout de même …

    Tu peux intégrer nos informations dans ton script, à partir du moment où tu expliques aux utilisateurs qu’ils ont besoin d’un inscription chez nous et qu’ils sont limités à 50 requêtes / jour.

    Le souci c’est que sur un Forum il va y avoir bien plus que 50 requêtes jour, donc pour être efficace tu devrais faire la requête qu’après une demande utilisateur histoire qui ne grille pas de requête inutilement.

    A +
    Thierry

  8. Bonjour,
    Bien, bien, trés bien j’en suis content.
    Est-il possible d’éviter de cliquer sur l’envoi de l’IP, pour récupérer les infos ?
    Merci

  9. Bonjour giheller,
    Nous sommes content que tu sois content :-). On ne comprends pas trop de quoi par contre …

    Pour ta question je pense que tu par le du script d’exemple, donc pour faire ça tu remplaces ces 2 lignes de PHP :

     if(isset($_POST['ip']) && $_POST['ip']!=""){
    $ip=$_POST['ip'];

    Par

     if(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR']!=""){
    $ip=$_SERVER['REMOTE_ADDR'];

    Et cela devrait fonctionner. Par contre à chaque réactualisation de la page tu interroges notre base de données. N’oublies pas que tu n’as que 50 reqêtes par jour autorisées, et que ceux qui abusent de cette limite seront blacklister pour éviter d’en faire patir notre serveur.

    A +

  10. Pour l’Ip c’est Ok. mais voilà ce qui fonctionnait hier ne fonctionne plus aujourd’hui. J’ai dû en faisant mes tests dépasser la limte. alors je dois être banni puisque on ne me retourne plus rien.

    Que puis-je faire ?
    Jean-Luc

  11. J’ai corrigé mon script ainsi un retour sur la page d’accueil ne fait plus de reconnection.
    Voilà ce que je fais.
    quand un visteur se connecte, j’enregistre sa ville et je le compte dans une table.
    dans une autre page j’interroge ma SGBD.

  12. Bonjour giheller,
    Je pense que c’est à toi que j’ai déjà répondu par mail, mais je vais répondre ici pour que cela serve à tout le monde.

    S.V.P. ne dépassez les 50 reqêtes par jour, sinon vous surchargez le serveur unitilement et si on a 1000 personnes qui agissent de la sorte le serveur risque d’être saturé unitilement. Conclusion, on envoi un mail pour prévenir du fait, hier j’ai envoyé un mail sur a2xsonorisation_at_… et je n’ai pas eue de réponse et les requêtes contiaient, donc blackliste.

    Il faut penser que nous n’avons pas envi que notre webservice serve de mauvaise cause c’est aussi une des raisons aussi pour laquelle on vous demande un mail qui vous appartient pour pouvoir communiquer avec vous. Donc s.v.p. inscrivez-vous avec un vrai mail que vous consultez régulièrement.

    Voilà j’espère avoir répondu et on va essayé dans un futur proche de proposer un script avec 2 versions de compteur (pour les 50 requêtes/jour) en BDD et en texte.

    A +

  13. Comme ecris par mail, je trouve votre api geniale; toutefois, aujourdhui, elle ne me renvoie aucune données.
    La mise a jour de ma bd necessitant plusieurs jours à 50 requettes, comment savoir si, aujourdhui, je ne suis pas blacklisté?
    Actuellement, j’effectue cette mise a jour manuellement, par la suite, j’inclurait la requette lors de l’inscription de nouveau membre.
    Quel code error faut-il prendre en consideration, pour reporter la requete ?
    Merci, et encore bravo !

  14. Salut Huuri_can,
    Pour le moment la variable erreur en retourne que 2 choses : 0 ou 1, 1 signifiant qu’il a y eue une erreur. Il est vrai que ta suggestion est intéressante, à savoir retourner un code erreur différent pour chaque type d’erreur.
    Je te promet d’en prendre compte prochainement (mais ce n’est pas demain non plus).

    Par contre je te conseil une chose assez simple, c’est un compteur journalier en fichier txt qui va te permettre de savoir où tu en ais …

    D’autre part en ce qui te conerne, tu fais des interrogations avec des IPs en 0.0.0.0, cela ne sert à rien puisqu’aucune information sur cette Ip, donc fait un test avec un simple « If » avant de lancer la requête tu seras plus économe je pense :-).

    Je met un exemple de compteur en PHP juste au dessus et je ferai une rubrique boite à outils plus tard.
    A +

  15. Merci Thierry,
    Effectivement,concernant les interrogations avec des IPs en 0.0.0.0, les membres de mon forum qui n’ont pas posté, n’ont pas d’ip 🙁
    je l’ai vu trop tard, excuse moi pour le dérangement. 😉
    Je fais mon "if" et capture l’ip lors de l’inscription pour ne plus solliciter votre serveur inutilement.
    A+

  16. le principe est sympa mais la localisation est erronée pour mon cas en tout cas.
    d’aprés votre API je me site à Annecy (Rhone Alpe) alors que je dispose d’une IP Fixe dont l’attache est Puteaux (région parisienne)
    ???

  17. Salut M@I,
    Tout d’abord merci pour l’info, cependant nous expliquons la fiabilité des informations d’une géolocalisation IP et il est vrai que pour diverses raison la ville de localisation n’est pas à 100 % fiable.

    Par contre en ce qui concerne les pays, pour le moment nous n’avons eue aucune erreur signalé.
    Peut-être peux-tu nuos dire si c’est un ligne Orange (livebox) ou si c’est une ligne dédiée, ça serait une piste car bien souvent les lignes dédiés passent par des relais spéciaux qui ne sont pas forcément localisés dans la même ville.

    Merci et A +

  18. Bonjour,

    Malheureusement, mon fournisseur d ‘acces à mis "allow_url_fopen" sur off pour des raisons de sécurité.
    Y-a t’il une solution autre, pour automatisé les mises a jour de geolacalisation.

    Bien merci à vous.
    Huuri.

  19. Bonjour,

    je trouve que c’est un bon projet surtout si vous arrivez à ce qu’il soit toujours à jour car je pense que de plus en plus le web va avoir besoins de ce genre de vérification sur la qualité et provenance du traffic.

    Je souhaiterai faire un test avec votre projet sur 48h car j’ai un doute sur la qualité de mon traffic actuel environ 100k/j, je souhaiterai vérifier de quel pays une certaine partie de mes visiteurs proviennent.
    Se baser sur le contenu du header des navigateurs étant non fiable car facilement falsifiable, je voudrais donc utiliser la géolocalisation par IP.

    Cordialement.
    Littleroswell

  20. Salut littleroswell,
    Merci opur tes compliments. Tu as tout à fait raison de dire sur le header des navigateurs. En fait, ce n’est pas qu’ils sont falsifiable, mais plutôt que l’on peut tous les reprodruire puisque l’on peut envoyer n’importe quel Header …

    Sinon pour ton test, il te suffit de créer un compte (je crois que c’est déjà fait d’ailleurs), la seule chose c’est que le nombre par jour est de 50 requêtes sinon il faut passer sur une version commercial de geolocalise-ip. Je t’invite à en faire la demande sur notre formulaire de contact.

  21. Excusez moi d’être insistant, mais j’ai rempli la semaine dernière votre formulaire suite à vos conseils et je n’ai toujours rien recu comme informations.

    Cordialement,
    Littleroswell

  22. slt, excellent boulot et merci encore pour le code!
    Par contre je me pose une question et même google n’y voit que du feu!je me connecte avec une clé 3G d’un opérateur mobile au Gabon mais l’@publique donnée par l’opérateur commence par 217.113.. et le code de géolocalisation indique que je metrouve en Belgique!!Je pense que l’opérateur a toutes ses infrastructures en Belgique et je sais qu’ils font leur lien par Vsat- ce qui fausse pas mal de stats vu qu’on a trois autres fai qui procèdent de la même façon.
    Alors comment contourner ce problème ou ce n’est pas possible(si les différentes classes d’IP publiques sont attribuées par pays et que c’est sur cela que se base votre database)?

  23. Salut Alibaba,

    Tu n’as pas tord, sauf que chaque FAI se doit de déclarer ces tranches correctement. Sinon tu imagines, Orange pourrait très bien déclarer toutes ces Ip sur Paris … Alors qu’il a des Ip à travers le monde.
    Il est certainement vri de dire que la tolérance est plus grande pour les opérateurs satellite, mais techniquement ils savent où sont géo-positionner leurs clients donc ils peuvent leurs attribuer une IP qui a était déclarée dans le bon pays et dans la bonne région.
    Ce problème a très longtemps été rencontré avec AOL qui sous pretexte que ces installations étaient en Allemagne et Angleterre alos les clients français étaient localisés dans l’un de ces 2 pays.

    Et pour répondre à ta question, on ne peut pas contourner ce problème … Peut-être que d’ici quelques mois ils auront déclarés correctement les tranches d’Ip.

    En espérant avoir répondu !!!
    A +

  24. Bonjour,
    cela fait des mois que j’utilise le script, et depuis 3 jours il ne fonctionne plus.
    J’ai une erreur "failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden"
    Le site est hébergé chez free, peut être que le changement vient de là.
    Suis je le seul ?

  25. Bonjour deruyter,

    En fait c’est très simple, il y a effectivement quelques jours (3 ou 4) tu as dépassé les 50 requêtes par jour donc tu as été blacklisté.
    Auparavant, on prévenait les utilisateurs avant de les mettre en Blackliste, mais certain n’appréciaient pas les règles et continuaient leurs requêtes ou s’arrangeaient pour créer de nouveau compte utilisateur avec de nouvelles IP.
    Bref, notre serveur était surchargé pour quelques égocentriques, nous avons donc décidé que dorénavant dés les 50 requêtes dépassées notre métrons l’Ip en Blackliste jusqu’à ce que l’utilisateur se manifeste. C’est ce qu’il vient de t’arriver justement, donc on vient de te sortir de la Blackliste.

    Merci d’avance donc de veiller à ne pas dépasser les 50 requêtes par jour pour le maintien du service pour tout le monde, nous avons mis un compteur à disposition pour cela.

    Merci à tous
    Thierry

  26. Bonjour à l’équipe !

    Cette possibilité est bien ce que je cherchais et fonctionne semble t’il au mieux de ce que les Fai permettent…

    Une remarque d’utilisateur : il est noté plus haut qu’à "à chaque réactualisation de la page tu interroges notre base de données". Est-ce à chaque ré actualisation de la page ou à chaque recherche ? J’espère que c’est à chaque recherche car sinon cela voudrait dire que c’est à chaque fois que l’on ouvre la page… et je suis un peu inquiet car c’est comme cela que fonctionne le compteur ?

    Cordialement

  27. Bonjour,

    Tout d’abord, bravo pour ce script qui semble prometteur ! 🙂

    Je suis sur un mutualisé OVH avec les bonnes fonctions PHP d’ouvertes. Par contre, votre fonction CURL ne marche pas et l’autre fonction avec file_get_contents me renvoie une erreur 403 : HTTP request failed! HTTP/1.1 403 Forbidden…

    Ce qui est amusant c’est que la fonction file_get_contents("http://www.monsite.com&quot😉 fonctionne, mais pas file_get_contents("http://www.monsite.com/index.htm"). J’ai la même erreur.

    Pouvez vous fournir une autre solution de fonctionnement svp ? Je ne pense pas être le seul à avoir cherché, mais à mon avis à part faire en sorte que votre homepage devienne le script si email, pass et ip sont renseignés, je vois pas…

    En gros on pourrait faire : http://www.geolocalise-ip.com?email=xxxx&pass=xxxx&ip=xxxxx

    C’est rageant car je vois bien que votre script fonctionne si je copie colle l’url dans firefox ou safari 🙁

    Bravo encore et merci de votre aide.

    Matt

    PS : apres mes tests, je serai intéressé par une offre commerciale…

  28. Bonjour Balafatch,

    Content que notre outil te convienne.
    Pour répondre à ta question c’est sur le nombre d’interrogations via l’API qu’est basée la limite des 50 requêtes/jour.
    En haut de page on propose 2 types de compteurs, il suffit de t’en servir pour ne pas dépasser les 50 requêtes, si tu les dépasses trop ou trop souvent ton Ip va être blacklistée et tu n’auras plus d’information mais une erreur 403 Forbidden.
    Voilà j’espère avoir répond à ta question.
    A +

  29. En décimal (notre façon de compter habituelle), chaque chiffre représente un "poids" selon sa place.
    par exemple, 325 = 3*100 + 2*10 + 5*1
    Le "poids" de chaque chiffre est une puissance de 10 (10^0=1, 10^1=10, 10^2 = 100, 10^3 = 1000, etc.)

    En binaire, c’est pareil, mais avec des puissances de 2.
    101 = 1*2^2 + 0*2^1 + 1*2^0 = 1*4 + 0*2 + 1*1 = 4+0+1=5

    Avec l’adresse IP, c’est la même chose. Sauf qu’ici, chaque partie de l’adresse à un "poids" d’une puissance de 256.
    Ainsi, la partie de droite à un poids de 256^0 = 1, la 2e partie en partant de la droite à un poids de 256^1 = 256, la 3e partie en partant de la droite à un poids de 256^2=256*256=65536 et enfin, la partie la plus à gauche à un poids de 256^3=256*256*256=16777216

    Ainsi, la 1ere adresse est 0.0.0.1, la 2e est 0.0.0.2, etc.
    La 256e n’est pas 0.0.0.256 mais 0.0.1.0 et la 257e est 0.0.1.1
    etc.

    Ainsi, l’une des adresse IP de Google, 66.102.11.99, peut être considéré comme étant le numéro 1113983843 (66*16777216 + 102*65536 + 11*256 + 99*1)

    Mais il est évidemment plus "simple" (si l’on peut dire) de retenir et de travailler avec 66.102.11.99 que de retenir et de travailler avec 1113983843 (1 milliard 113 millions 983 mille 843): ça fait des chiffres moins beaucoup grands à manipuler.

    En plus, "découper" le nombre en plusieurs partie comme ici avec l’IP, ça permet de définir des "classes".
    Par exemple, 127.*.*.* est l’adresse dit "de loopback" (l’ordinateur s’appelle lui-même)
    Les adresses 192.168.*.* et 10.*.*.* sont réservés aux réseaux locaux, etc.

    Ce genre de définition est évidemment plus difficile à faire si l’on manipulais un nombre non "découpé".

  30. Bonjour, merci pour ce sujet 🙂

    j’utilise également file_get_contents sur mon compte OVH business et j’ai un retour 403 depuis quelques jours, ça marche sur mon poste en local donc c’est clair que l serveur mutualisé OVH a été blacklisté

    comment faire pour le retirer de la blacklist ?
    pouvez-vous nous indiquer la procedure ?

    merci d’avance,
    Philippe

  31. Bonjour Philippe,
    Effectivement vu ce que tu décris il doit y avoir un Blacklistage. Il nous faudrait ton compte (l’adresse email que tu utilises pour Geolocalise Ip) et l’adresse IP en question pour te sortir de la Blackliste. Tu peux nous les envoyer sur webmaster@geolocalise-ip.com.
    Aujourd’hui il n’existe pas de procédure automatique, cela nopus permet de garder la main sur la blackliste.
    Thierry

  32. Pour éviter un "blacklistage" je vous suggère de ne pas relancer la géolocalisation si votre visteur a déjà été enregistré le jour même. Pour cela créez-vous une table des IP visteurs, lors d’une connexion regardez si la géolocalisation a déjà eu lieu, et dans ce cas prenez les infos de votre table.
    Jean-Luc

  33. Bonjour à tous, et merci à Jean-Luc pour pour nous faire profiter du nouveau script qu’il a écrit.
    Vous le trouverez plus haut dans les scripts à télécharger.

    J’en profite pour rappeler que tous les comptes qui dépassent les 50 requêtes / jour sont automatiquement blacklistés. Pour sortir de cette blackliste envoyez nous un mail à webmaster@geolocalise-ip.com.

    Merci de votre compréhension.

  34. Bonjour à tous
    Ma première visite de ce site est très intéressantE, en particulier pour l’indication du code postal.
    Malheureusement mon premier test de géolocalisation donne des résultats inexacts:
    il me donne Dabo comme ville et 57850 comme code postal.
    Je ne suis pas loin de Dabo géographiquement, mais ma ville st Senones (88210)
    Dommage j’ai actuellement un projet où cette application serait très utile.
    Cordialement
    Gérard

  35. Pas mal du tout !

    Par contre, comment faire si on veut plus de 50 requetes par jour ?
    Je suis prêt à donner de ma personne et vous aider pour la MAJ des ips dans la bdd. Ou alors finir votre projet de calcul d’orthodromie (que j’ai déja fait)

    2ème question, vous la trouvez où la base sur geoname ? j’ai parcouru le site sans rien trouver.
    Merci bcp!

  36. Salut Hugo,
    c’est écrit mais tu ne l’as peut-être pas vu « veuillez nous contacter pour une démarche commerciale« .
    Pour le moment la solution commerciale s’adresse à des professionnels qui aurait un usage intensif du webservice. J’entends par là, qu’il dépasse les 3000-4000 requêtes / jour.
    Nous réfléchissons à une solution adaptée à plus de monde, d’où le sondage, pour savoir si le jeu en vaut la chandelle.

    Merci pour ta proposition d’aide, mais on ne peut pas en ce moment gérer une équipe, cela serait une charge trop lourde pour nous.

    Quant à Geoname, cherches bien tu vas trouver 😉

    Thierry

  37. Bonjour,
    Une solution payante adaptée aux particuliers et aux petites entreprises verra bientôt le jour. Tout le monde en sera informé.

    Par contre, je tiens à informer que tous les comptes créés avec des adresses emails bidons sont bien évidement détruits.

    Thierry

  38. Bonjour Muby,
    Je suis désolé, cela arrive quelques fois, mais c’est rare. Cela étant dit, ton Ip a bien été géolocalisée en France et pas à Pékin :-).
    On a déjà parlé de la fiabilité de la géolocalisation à plusieurs reprises. Il est vrai qu’il peut être frustrant pour un internaute de lire sur le Blog que l’on est capable de le géolocaliser et que finalement on se trompe de plusieurs centaines de kilomètres …

    Ceci étant dit, est-ce que ta ville est Rousset ? Si c’est le cas on va modifier notre base en conséquence.
    Deuxième question, ta ligne est bien chez Free ? Et si oui est-elle récente ?
    Merci d’avance pour tes réponses, cela va nous aider à améliorer le service.

    Thierry

  39. Bonjour,

    Je viens de découvrir votre site et je le trouve très bien !!

    Par ailleurs, je ne sais pas si vous utilisez beaucoup ces fonctions en php, mais je vous conseille d’utiliser les opérateurs binaires pour effectuer ce style d’opération.

    Par exemple en PHP, au lieu de faire

    $numip = 16777216 * (int)$tab_ip[0];
    $numip += 65536 * (int)$tab_ip[1];
    $numip += 256 * (int)$tab_ip[2];
    $numip += (int)$tab_ip[3];

    Vous devriez faire

    $numip = ((int) $tab_ip[0])<<24;
    $numip |= ((int) $tab_ip[1])<<16;
    $numip |= ((int) $tab_ip[2])<<8;
    $numip |= (int) $tab_ip[3];

    Après pareil pour votre fonction en Perl, à la place d’utiliser le modulo, il est plus efficace d’utiliser l’opération binaire "et" :

    my $z = $ipnum & 255;
    $ipnum >>= 8;
    my $y = $ipnum & 255;
    $ipnum >>= 8;
    my $x = $ipnum & 255;
    $ipnum >>= 8;
    my $w = $ipnum & 255;

    Vous avez fait du très bon travail en tout cas, continuez comme ça !!

  40. Bonjour,

    je travail a la recherche d’une solution efficace de géolocalisation par IP, j’ai testé votre solution sur un ensemble d’adresses IP en France et voici mes résultats:

    62.23.34.147 Non référencé
    90.62.153.119 33,5km
    109.213.64.191 8,7km
    77.195.54.208 203km
    84.14.226.226 23,4km
    77 195 15 140 63,8km
    84.97.230.182 7,2km
    83.204.150.116 15,4km
    88.171.130.101 7,3km
    82.227.171.165 5,8km
    82.65.146.240 354km
    82.236.227.138 7km
    84.102.219.247 4,4km
    109.205.64.66 2,4km
    212.99.121.34 2,5km

    La valeur en kilomètres représente la distance réelle entre la géolocalisation donnée par votre service et la localisation réelle. Sauriez-vous me dire pourquoi une telle différence existe entre des géolocalisation qui vont etre a 2 ou 3km et pour certaines qui vont être a plusieurs dizaines de kilomètres ?

    Cordialement,

  41. Bonjour,

    J’ai installé votre API sur mon site, tout fonctionnait normalement, parfaitement bien, mais depuis quelques jours, sans que j’ai changé quelque chose cela ne fonctionne plus. Pourriez-vous me dire si vous avez changé quelque chose de votre côté et si il faut changer le code.
    Merci

  42. Un giga de mise à jours pour une commande whois !!!! Oo
    Votre trucs est trop lourds et trop imprécis.
    la totalité des internautes sont localisé sur le backbone des providers.

    Par contre en identifiants les noeuds et en comptant les milliseconds on peut crée un alogarythme qui localise l’utilisateur avec une précision de 10 ou 20 km on couple ça à un plug-in pour google-map et ça t’affiche la zone de ta localisation.

    T’as une solution légère, rapide et plus précise.
    Après faudras te dépêcher de la vendre avant que tout ceux qui se font escroquer par les FAI migrent sur les accés satellites.

  43. Bonjour,

    Je me suis inscrit hier afin de pouvoir bénéficier de votre API. Aujourd’hui j’ai fait quelques test, qui ont eu l’air de très bien marcher…
    Néanmoins, je suppose que j’ai du largement dépassé la limite authorizée de requettes (j’ai du en faire plus de 500, tout séparées d’au moins 2seg.).
    Cette première série était vraiment pour tester et actualisé une base de donnée que je possède (je restreint l’accès à un site via leur IP, à présent je voulais restreindre selon la région géographique, j’actualisais donc mas BDD)…
    Une fois que les données seront enregistrées, je n’interrogerais votre API plus que deux ou trois fois par jour tout au plus.

    Je me demandais donc s’il était possible de m’ouvrir un accès "extra-ordinaire" d’environ 800/1000 requêtes durant une seule journée (voir-même demi-journée), le temps d’actualiser ma base d’utilisateur …
    Quelle(s) serai(en), sinon les autres options envisageables ?

    MERCI BEAUCOUP.

  44. Bonjour Jails et Grouve,
    Tout d’abord désolé pour répondre si tardivement … Certaines priorités un nouvel arrivé dans la famille et les autres n’ont pas le temps …
    Pour Jails je dirais que tu devrais faire des tests mais je ne suis vraiment pas sûre que ta solution fonctionne, et puis il n’y a pas de whois de un giga, mais on a pas dit que l’on vous donner tout le fonctionnement de notre site … 🙂 A toi de voir si tu veux développer une autre solution.

    Pour Grouve, désolé mais je ne peux accéder à ta requête.

  45. Voici les erreurs que j’obtiens en exécutant l’exemple complet :

    Question : comment y remédier SVP ?

    Deprecated: Function split() is deprecated in C:\Program Files\EasyPHP-5.3.8.1\www\geolocalisaitonip\Exemple_script_geolocalise-ip.php on line 27

    Deprecated: Function split() is deprecated in C:\Program Files\EasyPHP-5.3.8.1\www\geolocalisaitonip\Exemple_script_geolocalise-ip.php on line 31

    Notice: Undefined offset: 1 in C:\Program Files\EasyPHP-5.3.8.1\www\geolocalisaitonip\Exemple_script_geolocalise-ip.php on line 32

    Deprecated: Function split() is deprecated in C:\Program Files\EasyPHP-5.3.8.1\www\geolocalisaitonip\Exemple_script_geolocalise-ip.php on line 31
    Une erreur s’est produite …

  46. Bonjour hugowenger,
    Les réponses sont là http://www.php.net/manual/fr/function.split.php, il faut lire le paragraphe « Notes ».
    Autre solution, capturer l’erreur, qui en fait n’en ait pas une car ce n’est qu’un avertissement :

  47. Bonjour Thierry,

    Je me servais de géolocalise avec moins de 50 accès par jour, tout fonctionnais très bien jusqu’à qu’un abruti fasse 150 accès dans la journée pour écrire n’importe quoi sur mon livre d’or.
    Du coup je pense que j’ai été radié de Géolocalise, peux-tu rétablir le compte.
    Mon site : http://www.dautonnerie.fr, contacte moi sur mon mail si tu as besoin d’infos supplémentaires.
    Cordialement.
    Dautonne

  48. Bonjour Dautonne,
    Je t’ai répondu par email, mais pour être clair pour les autres lorsque vous nous contacté pour ce genre de demande il faut nous fournir l’adresse Ip du serveur qui fait les requêtes, car c’est cette adresse Ip qui est blacklistée.
    Sinon pour ne pas que cela arrive, il suffit d’installer un compteur qui bloque les requêtes arrivait à 50 par jour (voir plus haut, il y a des exemples téléchargeables).

    Thierry

  49. Superbe service. Petit probleme avec les divers script.
    la fonction Split() étant obsolete et procurant des erreurs, je l’ai replacée par un explode() qui de plus est plus rapide puisqu’elle ne se sert pas du moteur d’expressions rationnelles.

    Du super boulot.

  50. Bonjour Thierry,
    Merci pour tes compliments. Effectivement Split() est obsolète et il faudrait le modifier. On va s’en occuper dans une prochaine version de l’exemple, car rappelons le ce n’est qu’un exemple d’utilisation.
    Encore merci pour les encouragements.

    Thierry (et oui c’est aussi mon prénom !)

  51. Bonjour,
    Le service m’interesse pour mon site mais je me pose une petite question:
    Pourquoi ne pas avoir mit en place un "vrai" webservice qu’on pourrait utiliser avec nusoap par exemple, plutôt qu’un bout de script qui nécessite d’ouvrir une faille de sécurité sur son serveur ? (je ne suis pas chaud pour autoriser l’ouverture d’URL externe via php, une simple injection et c’est tout le système qui est compromit)
    Merci

    1. Bonjour ads,
      Oui tu as raison un « vrai » webservice ou plutôt digne de ce nom passerait par l’utilisation d’une API comme NUSOAP en PHP. Nous avons fait ce choix il y a déjà un moment (presque 4 ans) tout simplement pour économiser de la ressource serveur, car il est beaucoup plus coûteux de faire tourner un webservice.
      De plus, ce que l’on a développé au départ est prévu pour les entreprises et bien souvent avec un serveur dédié ou virtuel dédié, et donc on s’est juste dit pourquoi en faire profiter d’autres personnes, mais on y gagne absolument rien et je dirais même que l’on paie de notre poche les frais d’hébergement.

      Ensuite pour ta culture en PHP, la faille de « allow_url_fopen » est pas trop mal expliquée ici http://guykastenbaum.blogspot.fr/2007/08/allowurlfopen-faille-include.html, et tu comprendras rapidement que la faille existe uniquement si tu travailles avec des variables dans tes includes et que tu ne vérifies pas tes variables. Personnellement pour éviter les effets de bord et pour coder proprement je définis et vérifie toujours mes variables et je travaille avec include_path et je n’ai donc pas besoin de variables dans mes includes.

      Enfin tu pourras voir par exemple ici http://www.thinkinglinux.org/?p=143 que la solution pour ne pas ouvrir allow_url_fopen à On il suffit d’utiliser CURL.
      Lis s.t.p. la première ligne de notre « script d’exemple » : // — ATTENTION POUR LA VERSION getresultip IL FAUT `allow_url_fopen = On` DANS LE php.ini
      Ce qui signifie que pour l’autre fonction « getresultipCURL » tu n’en as pas besoin !!!! Par contre il faut avoir CURL d’installée …

      J’espère avoir répondu à tes question « ads »

      Thierry

  52. bonjour
    j’ai des problèmes d’encodage de votre script, je suis sur un cms joomla, qui est sur urtf-8, et lorsque je change votre script qui est en iso-8859-1, je n’ai plus de localisation.
    avez vous une solution pour mettre le scrip en utf 8
    exemple en 8859-1 girart.fr/vm.php
    en utf8 girart.fr/vm1.php
    merci de votre aide

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.