Signatur
Beschreibung
geoip_id_by_name() ermittelt anhand der MaxMind-GeoIP-Datenbank, mit welchem Verbindungstyp ein Host oder eine IP-Adresse mit dem Internet verbunden ist. Der Rückgabewert ist eine ganzzahlige Konstante, die verschiedenen Verbindungstypen wie Modem, DSL, Unternehmensnetzwerk oder Mobilfunk entspricht.
Die Funktion gehört zur PECL-Extension geoip und benötigt eine lokal installierte GeoIP-Datenbank (NetSpeed-Edition). Sie ist besonders nützlich, wenn Anwendungen ihr Verhalten an die Verbindungsqualität des Nutzers anpassen möchten – etwa um bandbreitenintensive Inhalte für Nutzer mit langsamen Verbindungen zu reduzieren.
Als Rückgabewert wird eine der folgenden Konstanten verwendet: GEOIP_UNKNOWN_SPEED, GEOIP_DIALUP_SPEED, GEOIP_CABLEDSL_SPEED, GEOIP_CORPORATE_SPEED oder GEOIP_CELULAR_SPEED (historisch falsch geschrieben). Ist der Hostname unbekannt oder die Datenbank nicht vorhanden, wird GEOIP_UNKNOWN_SPEED zurückgegeben.
Da die Funktion auf einer statischen Datenbank basiert, die regelmäßig aktualisiert werden muss, können die Ergebnisse veraltet sein. Für produktive Umgebungen empfiehlt sich der Einsatz aktueller Datenbank-Updates von MaxMind.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $hostname Pflicht | string | Ein Hostname (z. B. example.com) oder eine IPv4-Adresse als Zeichenkette, für die der Verbindungstyp ermittelt werden soll. |
Rückgabewert
GEOIP_UNKNOWN_SPEED (0), GEOIP_DIALUP_SPEED (1), GEOIP_CABLEDSL_SPEED (2), GEOIP_CORPORATE_SPEED (3) oder GEOIP_CELULAR_SPEED (4). Bei unbekanntem Host oder fehlender Datenbank wird GEOIP_UNKNOWN_SPEED zurückgegeben.Beispiele
Verbindungstyp eines Hostnamens ermitteln
<?php
$hostname = 'example.com';
$connectionId = geoip_id_by_name($hostname);
switch ($connectionId) {
case GEOIP_DIALUP_SPEED:
echo "Einwahlverbindung (Modem/ISDN)";
break;
case GEOIP_CABLEDSL_SPEED:
echo "Kabel- oder DSL-Verbindung";
break;
case GEOIP_CORPORATE_SPEED:
echo "Unternehmensnetzwerk (T1/T3/Hochgeschwindigkeit)";
break;
case GEOIP_CELULAR_SPEED:
echo "Mobilfunk-Verbindung";
break;
case GEOIP_UNKNOWN_SPEED:
default:
echo "Verbindungstyp unbekannt";
break;
}
Inhalte je nach Verbindungstyp anpassen
<?php
$userIp = $_SERVER['REMOTE_ADDR'];
$connectionId = geoip_id_by_name($userIp);
if ($connectionId === GEOIP_DIALUP_SPEED || $connectionId === GEOIP_CELULAR_SPEED) {
// Leichtgewichtige Version der Seite für langsame Verbindungen
echo "<img src='thumbnail_small.jpg' alt='Vorschau'>";
} else {
// Vollauflösung für Breitband-Nutzer
echo "<img src='thumbnail_large.jpg' alt='Vorschau'>";
}
// Wichtig · Fallstricke
Veraltete Extension: Die geoip-PECL-Extension gilt als veraltet und wird nicht mehr aktiv gewartet. MaxMind hat den Support für das alte GeoIP-Datenbankformat (GeoIP Legacy) eingestellt. Für neue Projekte sollte stattdessen die GeoIP2-PHP-Bibliothek von MaxMind mit dem .mmdb-Datenbankformat verwendet werden.
Datenbank erforderlich: Die Funktion benötigt eine lokal installierte GeoIP-NetSpeed-Datenbank. Fehlt diese oder ist die Extension nicht geladen, erzeugt PHP einen fatalen Fehler bzw. E_WARNING.
Schreibfehler in Konstante: Die Konstante GEOIP_CELULAR_SPEED enthält einen historischen Tippfehler (korrekt wäre CELLULAR). Dieser ist Teil der offiziellen API und muss so verwendet werden.