Start · Sprachen · PHP · Referenz · geoip_record_by_name

geoip_record_by_name

Funktion

Gibt detaillierte Stadtinformationen (Land, Region, Stadt, Postleitzahl, Geo-Koordinaten) für einen Hostnamen oder eine IP-Adresse aus der GeoIP-Datenbank zurück.

seit PHP 5.0.0 Kategorie: misc

Signatur

geoip_record_by_name(string $hostname): array|false

Beschreibung

Die Funktion geoip_record_by_name() gehört zur PECL-Erweiterung geoip und liefert detaillierte geografische Informationen zu einer IP-Adresse oder einem Hostnamen. Im Gegensatz zu geoip_country_code_by_name(), das nur den Ländercode zurückgibt, liefert diese Funktion ein assoziatives Array mit Stadtdaten, Postleitzahlen, Regionen sowie Breiten- und Längengraden.

Die zurückgegebenen Daten stammen aus der GeoIP City-Datenbank (z. B. GeoLiteCity.dat oder der kommerziellen GeoCity.dat von MaxMind). Für die Funktion muss die entsprechende Datenbank lokal vorliegen und in der PHP-Konfiguration (geoip.custom_directory) korrekt eingebunden sein.

Typische Anwendungsfälle sind die standortbasierte Personalisierung von Webinhalten, die Analyse des geografischen Traffics oder die Implementierung regionaler Zugangsbeschränkungen. Das zurückgegebene Array enthält unter anderem die Schlüssel country_code, region, city, postal_code, latitude und longitude.

Hinweis: Die PECL-Erweiterung geoip ist veraltet und wird nicht mehr aktiv gepflegt. Moderne Alternativen wie MaxMind GeoIP2 oder maxminddb sollten bevorzugt werden.

Parameter

Name Typ Default Beschreibung
$hostname Pflicht string Der Hostname oder die IPv4-Adresse, für die geografische Informationen abgerufen werden sollen. Beispiele: '8.8.8.8' oder 'www.example.com'.

Rückgabewert

Typ
array|false
Beschreibung
Gibt bei Erfolg ein assoziatives Array mit geografischen Stadtinformationen zurück. Die wichtigsten Schlüssel sind: country_code, country_code3, country_name, region, city, postal_code, latitude, longitude, area_code, dma_code. Bei Misserfolg (z. B. unbekannte IP oder fehlende Datenbank) wird false zurückgegeben.

Beispiele

Stadtinformationen einer IP-Adresse abrufen

<?php
// Stadtdaten für eine bekannte IP-Adresse abrufen
$record = geoip_record_by_name('8.8.8.8');

if ($record !== false) {
    echo 'Land:        ' . $record['country_name'] . PHP_EOL;
    echo 'Ländercode:  ' . $record['country_code'] . PHP_EOL;
    echo 'Region:      ' . $record['region'] . PHP_EOL;
    echo 'Stadt:       ' . $record['city'] . PHP_EOL;
    echo 'Postleitzahl:' . $record['postal_code'] . PHP_EOL;
    echo 'Breitengrad: ' . $record['latitude'] . PHP_EOL;
    echo 'Längengrad:  ' . $record['longitude'] . PHP_EOL;
} else {
    echo 'Keine Informationen gefunden.';
}
Land: United States Ländercode: US Region: CA Stadt: Mountain View Postleitzahl:94043 Breitengrad: 37.4192 Längengrad: -122.0574

Standortbasierte Inhaltsanpassung für Besucher

<?php
// IP des aktuellen Besuchers ermitteln
$visitorIp = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';

$record = geoip_record_by_name($visitorIp);

if ($record !== false && !empty($record['country_code'])) {
    $countryCode = strtoupper($record['country_code']);

    // Länderspezifische Weiterleitung
    $redirectMap = [
        'DE' => 'https://www.example.de',
        'AT' => 'https://www.example.at',
        'CH' => 'https://www.example.ch',
    ];

    if (isset($redirectMap[$countryCode])) {
        header('Location: ' . $redirectMap[$countryCode]);
        exit;
    }
}

// Standard-Ausgabe für unbekannte oder nicht gemappte Länder
echo 'Willkommen auf unserer Webseite!';

// Wichtig · Fallstricke

Veraltete Erweiterung: Die PECL-Erweiterung geoip wird nicht mehr aktiv entwickelt und ist für neuere PHP-Versionen (ab PHP 8.x) möglicherweise nicht verfügbar. Es wird dringend empfohlen, auf moderne Bibliotheken wie MaxMind GeoIP2 oder den maxminddb-Reader umzusteigen.

Datenbank-Aktualität: Die Genauigkeit der zurückgegebenen Daten hängt stark vom Aktualitätsstand der verwendeten GeoIP-Datenbank ab. MaxMind aktualisiert seine Datenbanken regelmäßig; veraltete Datenbanken können zu falschen Ergebnissen führen.

IPv6-Unterstützung: Die ältere GeoIP-PECL-Erweiterung bietet keine zuverlässige Unterstützung für IPv6-Adressen. Für IPv6-Unterstützung sollten moderne Bibliotheken eingesetzt werden.

Datenschutz: Das Speichern oder Weitergeben von IP-basierten Standortdaten unterliegt der DSGVO. Stellen Sie sicher, dass die Verarbeitung solcher Daten rechtlich abgesichert ist und die Nutzer entsprechend informiert werden.