Start · Sprachen · PHP · Referenz · geoip_domain_by_name

geoip_domain_by_name

Funktion

Ermittelt den Second-Level-Domainnamen (z. B. <code>example.com</code>) für einen Hostnamen oder eine IP-Adresse anhand der GeoIP-Datenbank.

seit PHP 5.1.0 Kategorie: misc

Signatur

geoip_domain_by_name(string $hostname): string|false

Beschreibung

geoip_domain_by_name() ist Teil der PECL-Erweiterung geoip und fragt die MaxMind-GeoIP-Datenbank nach dem registrierten Second-Level-Domainnamen ab, der einer gegebenen IP-Adresse oder einem Hostnamen zugeordnet ist. Das Ergebnis ist typischerweise die Domain des Internetdienstanbieters oder des Netzwerkbetreibers, dem der entsprechende IP-Block gehört.

Diese Funktion ist besonders nützlich, wenn man herausfinden möchte, über welchen Provider ein Besucher auf die eigene Website zugreift. So kann man z. B. Anfragen von bestimmten ISPs analysieren, Missbrauch nachverfolgen oder einfache Netzwerkdiagnosen durchführen.

Voraussetzung für den Einsatz ist, dass die PECL-Erweiterung geoip installiert und eine aktuelle GeoIP-Datenbank (in der Regel GeoIP.dat oder GeoIPOrg.dat) auf dem Server hinterlegt ist. Die Qualität der Ergebnisse hängt direkt von der Aktualität der verwendeten Datenbank ab.

Zu beachten ist, dass die Funktion false zurückgibt, wenn kein Eintrag für die angegebene Adresse gefunden werden kann. Eine entsprechende Fehlerbehandlung ist daher empfehlenswert.

Parameter

Name Typ Default Beschreibung
$hostname Pflicht string Hostname oder IP-Adresse (IPv4), für den der Second-Level-Domainname ermittelt werden soll. Beispiel: 'www.example.com' oder '8.8.8.8'.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Second-Level-Domainnamen als Zeichenkette zurück (z. B. 'google.com'), falls ein Eintrag in der GeoIP-Datenbank gefunden wurde. Andernfalls wird false zurückgegeben, etwa wenn die IP-Adresse unbekannt ist oder die Datenbank keinen Eintrag enthält.

Beispiele

Domain eines bekannten DNS-Resolvers ermitteln

<?php
// Setzt eine installierte geoip-Erweiterung und eine gültige GeoIP-Datenbank voraus
$ip = '8.8.8.8'; // Google Public DNS
$domain = geoip_domain_by_name($ip);

if ($domain !== false) {
    echo "Der Second-Level-Domainname für $ip lautet: $domain\n";
} else {
    echo "Kein Eintrag in der GeoIP-Datenbank für $ip gefunden.\n";
}
Der Second-Level-Domainname für 8.8.8.8 lautet: google.com

Provider-Domain des aktuellen Website-Besuchers ermitteln

<?php
// IP-Adresse des Besuchers auslesen
$visitorIp = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';

$domain = geoip_domain_by_name($visitorIp);

if ($domain !== false) {
    echo htmlspecialchars("Ihr Provider-Domain: $domain");
} else {
    echo 'Provider-Domain konnte nicht ermittelt werden.';
}

// Wichtig · Fallstricke

Veraltete Abhängigkeit: Die geoip-PECL-Erweiterung basiert auf der alten MaxMind-GeoIP-Legacy-API, die von MaxMind nicht mehr aktiv weiterentwickelt wird. Für neue Projekte empfiehlt MaxMind die Verwendung der GeoIP2-PHP-Bibliothek in Kombination mit den neueren .mmdb-Datenbanken.

Datenbankaktualität: Die zurückgegebenen Informationen sind nur so aktuell wie die installierte GeoIP-Datenbank. Veraltete Datenbanken können zu falschen oder fehlenden Ergebnissen führen. Regelmäßige Aktualisierung ist daher wichtig.

IPv6: Die klassische geoip-Erweiterung unterstützt IPv6 nur eingeschränkt oder gar nicht. Für IPv6-Adressen sollten alternative Lösungen geprüft werden.

Datenschutz: IP-Adressen gelten in vielen Rechtsräumen als personenbezogene Daten. Die Verarbeitung und Speicherung von IP-Adressen unterliegt der DSGVO; entsprechende Hinweise in der Datenschutzerklärung sind erforderlich.