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

Geocodieren von Postleitzahlen mit der OpenGeoDB Im vorherigen Teil des Tutorials haben wir die OpenGeoDB installiert, und nun ist es an der Zeit das System sinnvoll einzusetzen. Ich verwende explizi...
Google Maps API mit jQuery Wie gestern bereits angekündigt, geht es imGoogle Mashup Demo nun erst mal wieder mit der Landkarte an sich weiter. Ich habe heute die Anwendung auf j...
Über 200 freie Icons für Landkarten Ich habe ja schon ausführlich drüber berichtet wie man zum Beispiel in Google Maps individuelle Icons verwendet. Eine Mashup lässt sich durch Einsatz ...
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