Signatur
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
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.';
}
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.