Signatur
Beschreibung
Die Funktion geoip_continent_code_by_name() ist Teil der GeoIP-PECL-Erweiterung und ermittelt anhand eines Hostnamens oder einer IPv4-Adresse den zweistelligen Kontinentcode gemäß der MaxMind-GeoIP-Datenbank.
Die zurückgegebenen Codes entsprechen den gängigen geographischen Abkürzungen: AF (Afrika), AN (Antarktis), AS (Asien), EU (Europa), NA (Nordamerika), OC (Ozeanien) und SA (Südamerika). Diese Funktion ist nützlich, wenn Inhalte nach Großregionen gefiltert, Nutzer in kontinentabhängige Preismodelle eingruppiert oder einfache Geo-Weiterleitungen implementiert werden sollen.
Voraussetzung für den Betrieb ist eine installierte GeoIP-PECL-Erweiterung sowie eine aktuelle MaxMind-Datenbank (z. B. GeoIP.dat). Wird kein Eintrag für die angegebene Adresse gefunden oder ist die Erweiterung nicht verfügbar, gibt die Funktion false zurück.
Für IPv6-Adressen oder präzisere Geolokalisation (Land, Stadt) stehen verwandte Funktionen wie geoip_country_code_by_name() oder geoip_record_by_name() zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $hostname Pflicht | string | Hostname oder IPv4-Adresse, für die der Kontinentcode ermittelt werden soll. Beispiel: 'www.example.de' oder '93.184.216.34'. |
Rückgabewert
'EU' für Europa) oder false, wenn der Hostname nicht aufgelöst werden konnte oder kein Eintrag in der Datenbank existiert.Beispiele
Kontinentcode einer IP-Adresse ermitteln
<?php
// Voraussetzung: GeoIP-PECL-Erweiterung und Datenbank sind installiert
$ip = '93.184.216.34'; // Beispiel-IP (example.com)
$code = geoip_continent_code_by_name($ip);
if ($code !== false) {
echo "Kontinentcode: " . $code . "\n";
} else {
echo "Kein Eintrag für diese IP gefunden.\n";
}
Nutzer anhand des Kontinents weiterleiten
<?php
$userIp = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
$continent = geoip_continent_code_by_name($userIp);
$redirectMap = [
'EU' => 'https://europe.example.com',
'NA' => 'https://northamerica.example.com',
'AS' => 'https://asia.example.com',
];
if ($continent && isset($redirectMap[$continent])) {
header('Location: ' . $redirectMap[$continent]);
exit;
} else {
echo "Standardseite wird angezeigt.";
}
// Wichtig · Fallstricke
Veraltete Erweiterung: Die GeoIP-PECL-Erweiterung gilt als veraltet und wird nicht aktiv weiterentwickelt. Für neue Projekte empfiehlt sich die Verwendung moderner Alternativen wie MaxMind GeoIP2 PHP API in Kombination mit der GeoLite2-Datenbank.
Datenbankaktualität: Die Genauigkeit der Ergebnisse hängt stark vom Aktualitätsdatum der verwendeten MaxMind-Datenbank ab. Veraltete Datenbanken können zu fehlerhaften Zuordnungen führen.
Datenschutz: IP-Adressen gelten in vielen Rechtsordnungen (z. B. DSGVO) als personenbezogene Daten. Die Verarbeitung sollte entsprechend dokumentiert und gerechtfertigt sein.
DNS-Auflösung: Wird ein Hostname statt einer IP-Adresse übergeben, führt die Funktion intern eine DNS-Auflösung durch, was zu Latenzen führen kann.