Mittels GeoIP die Herkunftsstadt einer IP-Nummer ermitteln

Google Maps-Anwendungen kursieren inzwischen recht viele dort draußen, aber leider kommen die wenigstens auf die Idee, dass man eigentlich dem Nutzer ein sehr nettes Feature anbieten könnte: Man ermittelt seine IP-Nummer, mit der GeoIP-Datenbank stellt man fest, in welchem Ort der Provider des Benutzers beheimatet ist, und dann zentriert man die Map auf diesen Ort. Natürlich hat man an dieser Stelle mit allerhand Unschärfe zu kämpfen, denn zum einen kann die GeoIP an sich fehlschlagen, zum anderen kann es auch bei der Geocodierung zu Problemen kommen. Nichtsdestotrotz ist es ein nettes Feature, das man bei manchen Projekten durchaus einsetzen sollte.

Wie Adressen geocodiert werden, habe ich ja schon beschrieben, insofern müssen wir uns nur noch mit der GeoIP an sich beschäftigen. Die Datenbank GeoLite City von Maxmind ist hierbei frei und ist schon sehr genau (99.5%). Wer es genauer wissen will, kann sich auf der Homepage von Maxmind natürlich auch für die kommerzielle Version entscheiden. Der Zugriff auf beide ist programmier-technisch identisch. Für die kommerzielle Version können darüber hinaus monatliche Updates erworben werden.

Allerdings hat das Ganze auch einen Haken: Sinnvollerweise entscheidet man sich bei der Datenbank für eine Binärversion, die 30MB groß ist. Funktionscaching ist also sinnvollerweise angesagt! Wer möchte, kann sich natürlich auch für die .csv-Version entscheiden, die dann in eine Datenbank eingelesen werden könnte. Maxmind stellt eine prima Installationsanleitung für die Datenbank bereit. Wobei sich die Installation eigentlich auf das Auspacken des Archives beschränkt.

Zumindest für PHP gibt es eine eigene API, die den direkten Zugriff auf die Binärdatei erlaubt. Downloaden kann man die PHP-Dateien hier. Wenn man in Performance-Probleme läuft, kann man die API auch direkt in PHP als Modul einkompilieren. Für unser Tutorial verwenden wir natürlich die „einfache“ Methode, da die wenigsten Provider es zulassen werden, PHP anzupassen.

Hat man das Tool heruntergeladen, ist der Einsatz wirklich einfach:

include("geoipcity.inc");
include("geoipregionvars.php");
$clientip = $_SERVER['REMOTE_ADDR'];
$gi = geoip_open("/usr/local/share/GeoIP/GeoIPCity.dat",GEOIP_STANDARD);
$record = geoip_record_by_addr( $gi, $clientip );
echo $record->city;
geoip_close($gi);

Ähnliche Beiträge

IP-Adressen Geolocation XML API Nicht dass es sonderlich schwer wäre mit PHP, und zum Beispiel der freien Version der Maxmind-IP-Datenbank, eine Zuordnung IP <-> Land zu implem...
Design-Update zum Ersten Ok, Update ist zugegebenermaßen etwas übertrieben, da das Mashup noch gar kein Design hatte, aber dennoch war es an der Zeit zumindest ein paar kleine...
MooGeo – Geocoding mit den Mootools Geocoding kommt ja immer mehr und ist irgendwo inzwischen auch Bestandteil fast jeder Web2.0-Anwendung. Das Ganze wird noch einmal einen Schub durch d...
Google Maps Rebrush Google hat den Maps einen Rebrush (Redesign wäre in dem Zusammenhang wohl etwas zu hoch gegriffen) verpasst, die ersten Änderungen sind nun online! Zu...

7 Kommentare

Schreibe einen Kommentar