Aujourd’hui, si je devais réécrire le plugin Whois Online de Piwigo, j’utiliserai l’api d’infodb.com.
De fait, il deviendrait totalement inutile d’avoir la conversation habituelle des propriétaires de téléphones mobiles.
Avertissement au lecteur :
Les indications suivantes sont obtenues dynamiquement et ne sont pas enregistrées sur ce site mais pourraient être enregistrées par d’autres.
(Elles seront certainement différentes pour chacun de vous).
Votre accès :
Ville de connexion de votre FAI :
Votre région :
Latitude : 0
Longitude : 0
Timezone :
Soit GMT : 0
Google Maps
Quelques précisions devraient être utiles pour votre compréhension.
A partir de votre adresse IP, en utilisant les services gratuits de ipinfodb.com, en php on codera (version simplifiée) :
if (getenv(HTTP_X_FORWARDED_FOR)) {
$ip_address = getenv(HTTP_X_FORWARDED_FOR);
} else {
$ip_address = getenv(REMOTE_ADDR);
}
$xml_src = file_get_contents('http://ipinfodb.com/ip_query.php?timezone=true&ip=' . $ip_address);
$xml = new SimpleXMLElement($xml_src);
echo 'Ville de connexion de votre FAI : ' . $xml->City . '<br/>';
echo 'Votre région : ' . $xml->RegionName . '<br/>';
echo $xml->CountryName . '<br/>';
echo 'Latitude : ' . $xml->Latitude . '<br/>';
echo 'Longitude : ' . $xml->Longitude . '<br/>';
echo 'Timezone : ' . $xml->TimezoneName . '<br/>';
echo 'Soit GMT : ' . ($xml->Gmtoffset / 3600) . '<br/>';
if ( $xml->Isdst == 1 ) echo 'en heure d\'été.<br/>';
echo '<a target="_blank" href="http://maps.google.fr/maps?hl=fr&z=13&ie=UTF8&ll=' . $xml->Latitude . ',' . $xml->Longitude . '" alt="Google Maps">Google Maps</a>';
?>
file_get_contents peut être restreint par votre hébergeur auquel cas il existe peut-être des solutions de remplacement (à base de fsockopen ou de curl) mais ce n’est pas le propos.
Il est recommandé d’être en php 5 au minimum (SimpleXML requiert PHP 5).
Cette extension, SimpleXML, est disponible via l’option de configuration de php –enable-libxml (ceci dit libxml est activée par défaut).
SimpleXMLElement va « parser » (transformer) le résultat de ipinfodb.com/ip_query.php en un objet php.
Il suffira ensuite d’utiliser chacun des éléments obtenus (propriétés de l’objet php).
Exemple de résultat de ip_query.php :
<Ip>XX.XX.XXX.XXX</Ip>
<Status>OK</Status>
<CountryCode>FR</CountryCode>
<CountryName>France</CountryName>
<RegionCode>A9</RegionCode>
<RegionName>Languedoc-Roussillon</RegionName>
<City>Graissessac</City>
<ZipPostalCode/>
<Latitude>43.6667</Latitude>
<Longitude>3.0833</Longitude>
<TimezoneName>Europe/Paris</TimezoneName>
<Gmtoffset>7200</Gmtoffset>
<Isdst>1</Isdst>
</Response>
Gmtoffset représente le décalage en seconde par rapport à l’heure du méridien de Greenwhich (GMT Greenwhich Mean Time).
Isdst à 1 indique que la zone est en heure d’été.
Certains champs peuvent être non renseignés et dans ce cas vous n’aurez pas d’erreur mais un élément vide, exemple fréquent en France, le Code postal (<ZipPostalCode/>).
A tous les développeurs : à vos claviers, c’est à vous d’imaginer comment vous allez pouvoir mettre en œuvre ce service.
N’abusez pas de ce service, vous pourriez être temporisé, voire banni.
Attention, vous devez toujours savoir respecter la vie privée de vos visiteurs, donc ne conservez pas ces données au delà du nécessaire.
Chers visiteurs de passage n’oubliez pas que ce qu’internet permet est vraiment peu de chose comparé aux renseignements qui pourraient être collectés par les opérateurs téléphoniques.
