Start · Sprachen · PHP · Referenz · geoip_org_by_name

geoip_org_by_name

Funktion

Ermittelt anhand eines Hostnamens oder einer IP-Adresse den Namen der zugehörigen Organisation oder des Internet Service Providers (ISP).

seit PHP 5.0.0 Kategorie: misc

Signatur

geoip_org_by_name(string $hostname): string|false

Beschreibung

geoip_org_by_name() verwendet die GeoIP-Datenbank (MaxMind), um zu einem übergebenen Hostnamen oder einer IPv4-Adresse den Namen der registrierten Organisation oder des ISPs zurückzugeben. Die Funktion gehört zur PECL-Erweiterung geoip und erfordert, dass diese Erweiterung installiert und eine gültige GeoIP-Datenbank vorhanden ist.

Typische Anwendungsfälle sind die Analyse von Webzugriffen (z. B. ob ein Besucher aus einem Unternehmens- oder Rechenzentrumsnetz kommt), das Filtern von Bot-Traffic sowie die Auswertung von Log-Dateien. Die Funktion löst den Hostnamen intern auf und führt dann eine Datenbankabfrage durch.

Die Qualität und Aktualität der Ergebnisse hängt stark von der eingesetzten GeoIP-Datenbank ab. Für genaue Ergebnisse sollte die Datenbank regelmäßig aktualisiert werden. MaxMind bietet sowohl eine kostenlose (GeoLite) als auch eine kostenpflichtige (GeoIP) Variante an.

Hinweis: Diese Funktion steht nur zur Verfügung, wenn die PECL-Erweiterung geoip geladen ist. In modernen Projekten wird häufig die Bibliothek maxmind-db/reader direkt über Composer verwendet, da die PECL-Erweiterung nicht mehr aktiv gepflegt wird.

Parameter

Name Typ Default Beschreibung
$hostname Pflicht string Hostname oder IPv4-Adresse, für den die zugehörige Organisation ermittelt werden soll. Beispiele: 'example.com' oder '217.0.0.1'.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Namen der Organisation oder des ISPs als Zeichenkette zurück. Falls kein Eintrag in der Datenbank gefunden wird oder ein Fehler auftritt, wird false zurückgegeben.

Beispiele

Organisationsname einer IP-Adresse ermitteln

<?php
// Voraussetzung: PECL-Erweiterung geoip ist installiert
$ip = '8.8.8.8';
$org = geoip_org_by_name($ip);

if ($org !== false) {
    echo 'Organisation: ' . $org;
} else {
    echo 'Keine Organisationsinformation gefunden.';
}
Organisation: Google LLC

Organisationsname eines Hostnamens mit Fehlerbehandlung

<?php
// Prüfen, ob die geoip-Erweiterung überhaupt verfügbar ist
if (!function_exists('geoip_org_by_name')) {
    die('Die geoip-Erweiterung ist nicht installiert.');
}

$hostname = 'www.example.com';
$org = geoip_org_by_name($hostname);

if ($org !== false) {
    echo htmlspecialchars($org, ENT_QUOTES, 'UTF-8');
} else {
    echo 'Unbekannte Organisation für: ' . htmlspecialchars($hostname, ENT_QUOTES, 'UTF-8');
}

Einfache Bot-Erkennung anhand der Organisation

<?php
$visitorIp = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
$org = geoip_org_by_name($visitorIp);

$botKeywords = ['Google', 'Amazon', 'Microsoft', 'Datacenter', 'Hosting'];
$isBot = false;

if ($org !== false) {
    foreach ($botKeywords as $keyword) {
        if (stripos($org, $keyword) !== false) {
            $isBot = true;
            break;
        }
    }
}

if ($isBot) {
    echo 'Möglicher Bot-Besuch aus: ' . htmlspecialchars($org, ENT_QUOTES, 'UTF-8');
} else {
    echo 'Normaler Besucher.';
}

// Wichtig · Fallstricke

Deprecation / Pflege: Die PECL-Erweiterung geoip wird nicht mehr aktiv gepflegt. Für neue Projekte empfiehlt sich die direkte Verwendung des MaxMind DB Readers via Composer (maxmind-db/reader) zusammen mit der aktuellen GeoIP2-Datenbank.

IPv6: Die klassische PECL-geoip-Erweiterung unterstützt IPv6 nur eingeschränkt oder gar nicht, abhängig von der installierten Datenbankversion.

Datenschutz: IP-Adressen sind in vielen Ländern (z. B. EU/DSGVO) personenbezogene Daten. Die Verarbeitung und Speicherung der Ergebnisse muss datenschutzkonform erfolgen.

Fehlerbehandlung: Wenn der Hostname nicht aufgelöst werden kann oder die Datenbank keinen Eintrag enthält, gibt die Funktion false zurück. Eine explizite Prüfung mit === false ist daher empfehlenswert.