open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
Open Source Projekte

Was ist geoip2?

Autor
Was ist geoip2?

Die PHP-Bibliothek geoip2/geoip2 ist ein offizielles SDK von MaxMind, einem Anbieter von Geolokalisierungsdiensten. Mit dieser Bibliothek kannst du IP-Adressen analysieren und daraus geografische Informationen wie Land, Stadt, Region oder sogar Breitengrad und Längengrad extrahieren.

Sie basiert auf den GeoIP2-Datenbanken von MaxMind, die es in einer kostenlosen Lite-Variante (GeoLite2) und einer kommerziellen Variante gibt.

Wofür kann man GeoIP2 verwenden?

Typische Anwendungsfälle:

  • Automatische Sprachauswahl auf Websites basierend auf dem Land des Besuchers
  • Schutz vor verdächtigen Zugriffen aus bestimmten Regionen
  • Regionale Inhalte oder Preise anzeigen
  • Statistische Auswertungen zum Herkunftsland der Nutzer

Installation

Am einfachsten installierst du das Paket über Composer:

composer require geoip2/geoip2

Zusätzlich benötigst du die passende GeoIP2-Datenbankdatei (z. B. GeoLite2-City.mmdb), die du nach Registrierung kostenlos von MaxMind herunterladen kannst: https://dev.maxmind.com/geoip/geolite2/

Nutzung der Bibliothek

Hier ein Beispiel zur Bestimmung von Stadt und Land anhand einer IP-Adresse:

<?php

require_once 'vendor/autoload.php';

use GeoIp2\Database\Reader;

// Reader-Objekt mit Pfad zur .mmdb-Datenbank
$reader = new Reader('/pfad/zur/GeoLite2-City.mmdb');

// Beispiel-IP-Adresse
$ipAddress = $_SERVER['REMOTE_ADDR'];

try {
    $record = $reader->city($ipAddress);

    echo "Land: " . $record->country->name . "<br>";
    echo "Stadt: " . $record->city->name . "<br>";
    echo "Postleitzahl: " . $record->postal->code . "<br>";
    echo "Koordinaten: " . $record->location->latitude . ", " . $record->location->longitude;
} catch (GeoIp2\Exception\AddressNotFoundException $e) {
    echo "IP-Adresse konnte nicht lokalisiert werden.";
}

Unterstützte Datenbanken

Die Bibliothek kann verschiedene Datenbanktypen lesen:

  • GeoLite2-Country.mmdb – nur Länderinformationen
  • GeoLite2-City.mmdb – Länder-, Städte- und Koordinateninformationen
  • GeoIP2-ISP.mmdb – Informationen zum Internetanbieter (kommerziell)

Tipps zur Nutzung

  • Die Genauigkeit hängt stark von der Datenbankversion ab. Für präzisere Geodaten empfiehlt sich die kommerzielle GeoIP2-Variante.
  • Die GeoLite2-Datenbanken müssen regelmäßig aktualisiert werden – MaxMind bietet dafür automatische Updates via Cronjob oder API-Key.
  • Bei Cloudflare oder Loadbalancern sollte man auf den richtigen IP-Header achten (z. B. $_SERVER['HTTP_X_FORWARDED_FOR']).

Fazit

geoip2/geoip2 ist eine einfache, aber leistungsfähige PHP-Bibliothek, um geografische Informationen aus IP-Adressen zu extrahieren. Sie eignet sich hervorragend für personalisierte Inhalte, Sicherheitsmechanismen und Standortanalysen – und ist mit der GeoLite2-Datenbank sogar kostenlos einsetzbar.