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