Heute habe ich eine Möglichkeit gesucht, aus einer IP-Adresse eine möglichst genaue Ortsangabe zu bekommen. Da ich diese Funktionalität nur selten benötige, wollte ich keine Datenbank auf meinem Server installieren, welche mir dies bereitstellen könnte. Aus diesem Grund habe ich mich nach API’s umgesehen, welche dies für mich erledigen können.

Es gibt mehrere Möglichkeiten in diesem Sektor. Das häufig beworbene Sourceforge-Projekt MaxWind GeoIP gefiel mir prinzipiell nicht schlecht, erforderte aber entweder die Installation der IP-Daten auf einem Server oder konnte nur wenige kostenlose Anfragen pro Tag verarbeiten.

Eine weitere Wahl war HostIP, welche mir leider für meine momentane IP schon keine Daten liefern konnten. Mehr oder minder also nicht brauchbar.

Ich habe mich letztendlich für IPInfoDB entschieden, da diese eine einfache und relativ genaue API im XML oder JSON-Format bereitstellen konnten.

Ein schnelles Beispiel in curl und PHP zur Lokalisierung der IP mittels des Städtenamens:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
function locateCityByIp($ip){
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, 'http://ipinfodb.com/ip_query.php?ip=' . $ip . "&output=xml");
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
 $ipdata = simplexml_load_string(curl_exec($ch));
 if(!empty($ipdata->City)) {
 return $ipdata->City;
 } else {
 return '';
 }
}