Signatur
Beschreibung
geoip_region_by_name() durchsucht die GeoIP-Datenbank nach dem angegebenen Hostnamen oder der IP-Adresse und gibt ein assoziatives Array zurück, das den zweistelligen ISO-3166-Ländercode (country_code) sowie den regionsspezifischen Code (region) enthält. Diese Funktion ist Teil der PECL-Erweiterung geoip und benötigt eine installierte und konfigurierte GeoIP-Datenbank (z. B. von MaxMind).
Typische Anwendungsfälle sind die geografische Einschränkung von Inhalten, das Routing von Nutzern auf länderspezifische Unterseiten oder die Analyse des Besucherursprungs nach Region. Der Regionscode folgt dem FIPS-10-4-Standard für die meisten Länder, für die USA und Kanada werden zweistellige Abkürzungen der Bundesstaaten bzw. Provinzen verwendet.
Die Funktion ist nur verfügbar, wenn die geoip-Erweiterung in PHP installiert und eine geeignete Datenbank (GeoIP Region Edition oder höher) vorhanden ist. Fehlt die Datenbank oder kann der Host nicht aufgelöst werden, gibt die Funktion false zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $hostname Pflicht | string | Der Hostname oder die IPv4-Adresse, für den/die Länder- und Regionsinformationen abgefragt werden sollen, z. B. 'example.com' oder '8.8.8.8'. |
Rückgabewert
country_code (zweistelliger ISO-Ländercode, z. B. 'DE') und region (Regionscode, z. B. '16' für Bayern) zurück. Kann der Hostname nicht gefunden oder die Region nicht bestimmt werden, wird false zurückgegeben.Beispiele
Regions- und Länderinformationen einer IP-Adresse abrufen
<?php
// IP-Adresse eines deutschen Servers abfragen
$result = geoip_region_by_name('8.8.8.8');
if ($result !== false) {
echo 'Ländercode: ' . $result['country_code'] . PHP_EOL;
echo 'Region: ' . $result['region'] . PHP_EOL;
} else {
echo 'Keine Regionsinformationen gefunden.';
}
Nutzer auf länderspezifische Unterseite weiterleiten
<?php
// IP-Adresse des Besuchers auslesen
$ip = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
$geoData = geoip_region_by_name($ip);
if ($geoData !== false) {
$countryCode = strtolower($geoData['country_code']);
$region = $geoData['region'];
// Weiterleitung auf länderspezifische URL
header('Location: https://www.example.com/' . $countryCode . '/');
exit;
} else {
// Fallback: Standard-Sprachversion
header('Location: https://www.example.com/en/');
exit;
}
// Wichtig · Fallstricke
Veraltete Erweiterung: Die geoip-PECL-Erweiterung wird nicht mehr aktiv gewartet. Für neue Projekte empfiehlt sich der Einsatz aktueller Alternativen wie MaxMind GeoIP2 mit der offiziellen PHP-Bibliothek, die die moderneren .mmdb-Datenbanken unterstützt.
Datenbankpflege: Die GeoIP-Datenbanken müssen regelmäßig aktualisiert werden, da IP-Zuordnungen sich häufig ändern. Veraltete Datenbanken liefern unzuverlässige oder falsche Ergebnisse.
Datenschutz: Die Verarbeitung von IP-Adressen zur geografischen Zuordnung kann datenschutzrechtlich relevant sein (z. B. DSGVO). Es sollte sichergestellt werden, dass IP-Adressen nicht unnötig gespeichert oder weitergegeben werden.
IPv6: Die ältere GeoIP-Erweiterung unterstützt IPv6 nur eingeschränkt. Für vollständige IPv6-Unterstützung sollte eine neuere Lösung verwendet werden.