Signatur
Beschreibung
geoip_isp_by_name() durchsucht die GeoIP-ISP-Datenbank (MaxMind) nach dem Internet Service Provider, der zu einem bestimmten Hostnamen oder einer IPv4-Adresse gehört. Die Funktion ist Teil der PECL-Extension geoip und erfordert die entsprechende ISP-Datenbank (GeoIP.dat mit ISP-Informationen), welche auf dem Server installiert sein muss.
Typische Einsatzbereiche sind die Analyse von Zugriffsprotokollen, die geographische Segmentierung von Besuchern oder die Erkennung von VPN-Nutzern und Proxys, da viele Hosting- und VPN-Anbieter als ISP eingetragen sind.
Die Funktion akzeptiert sowohl Hostnamen (z. B. example.com) als auch IP-Adressen als Zeichenkette. Bei Hostnamen wird intern eine DNS-Auflösung durchgeführt. Es ist zu beachten, dass die Qualität und Aktualität der Ergebnisse stark von der verwendeten GeoIP-Datenbank abhängt.
Die geoip-Extension sowie die zugehörigen Datenbanken werden von MaxMind nicht mehr aktiv für die alte PECL-Variante gepflegt. Für neue Projekte empfiehlt sich der Einsatz der maxmind-db/reader-Bibliothek zusammen mit den GeoIP2-Datenbanken.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $hostname Pflicht | string | Der Hostname oder die IPv4-Adresse (als Zeichenkette), für den/die der ISP-Name ermittelt werden soll. Beispiele: '8.8.8.8' oder 'example.com'. |
Rückgabewert
false zurück, wenn kein ISP-Eintrag gefunden wurde, die ISP-Datenbank nicht verfügbar ist oder ein Fehler aufgetreten ist.Beispiele
ISP für eine bekannte IP-Adresse ermitteln
<?php
// ISP für Googles öffentlichen DNS-Server ermitteln
$hostname = '8.8.8.8';
$isp = geoip_isp_by_name($hostname);
if ($isp !== false) {
echo 'ISP für ' . $hostname . ': ' . $isp . PHP_EOL;
} else {
echo 'ISP konnte nicht ermittelt werden.' . PHP_EOL;
}
ISP des aktuellen Besuchers ermitteln und protokollieren
<?php
// IP-Adresse des Besuchers aus der Server-Variablen lesen
$visitorIp = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
// Sicherstellen, dass es sich um eine gültige öffentliche IP handelt
if (filter_var($visitorIp, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
$isp = geoip_isp_by_name($visitorIp);
if ($isp !== false) {
error_log('Besuch von ISP: ' . $isp . ' (' . $visitorIp . ')');
echo 'Ihr Internet Service Provider: ' . htmlspecialchars($isp) . PHP_EOL;
} else {
echo 'ISP-Informationen nicht verfügbar.' . PHP_EOL;
}
} else {
echo 'Lokale oder reservierte IP-Adresse – kein ISP-Lookup möglich.' . PHP_EOL;
}
// Wichtig · Fallstricke
Veraltete Extension: Die PECL-geoip-Extension gilt als veraltet und wird nicht mehr aktiv gewartet. Für neue Projekte sollte die offizielle MaxMind DB Reader PHP-Bibliothek in Verbindung mit GeoIP2-Datenbanken verwendet werden.
Datenbank erforderlich: Die Funktion benötigt zwingend eine ISP-spezifische GeoIP-Datenbank. Die kostenlose GeoLite-Datenbank enthält in der Regel keine ISP-Daten; hierfür ist die kostenpflichtige GeoIP ISP-Datenbank von MaxMind notwendig.
Sicherheit: Vertraue der Ausgabe dieser Funktion nie blind für sicherheitskritische Entscheidungen, da ISP-Datenbankeinträge unvollständig oder veraltet sein können. Nutze htmlspecialchars() bei der Ausgabe des ISP-Namens im Browser, um XSS zu vermeiden.
IPv6: Die klassische PECL-geoip-Extension unterstützt IPv6 nur eingeschränkt oder gar nicht. Bei IPv6-Adressen kann die Funktion false zurückgeben.