Signatur
Beschreibung
Die Funktion geoip_country_code3_by_name() gehört zur PECL-Erweiterung geoip und sucht in der MaxMind-GeoIP-Datenbank nach dem Land, das einer IP-Adresse oder einem Hostnamen zugeordnet ist. Zurückgegeben wird der dreistellige Ländercode nach ISO 3166-1 alpha-3 (z. B. DEU für Deutschland, USA für die Vereinigten Staaten).
Im Gegensatz zu geoip_country_code_by_name(), die den zweistelligen Code liefert, eignet sich diese Funktion besonders dort, wo der dreistellige Code in Systemen oder Datenbanken erwartet wird, die den ISO-3166-1-alpha-3-Standard verwenden.
Als Eingabe kann sowohl ein Domainname (z. B. www.example.com) als auch eine IPv4-Adresse in Punkt-Notation übergeben werden. Bei einem Domainnamen wird intern eine DNS-Auflösung durchgeführt, bevor die Datenbankabfrage erfolgt.
Die Genauigkeit der Ergebnisse hängt vollständig von der Aktualität der verwendeten GeoIP-Datenbank ab. Für produktive Umgebungen sollte die Datenbank regelmäßig aktualisiert werden, da sich IP-Zuordnungen ändern können.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $hostname Pflicht | string | Ein Hostname (z. B. www.example.de) oder eine IPv4-Adresse in Punkt-Notation (z. B. 193.99.144.80), für die der dreistellige Ländercode ermittelt werden soll. |
Rückgabewert
DEU, USA, GBR). Falls kein Eintrag gefunden wird oder die GeoIP-Datenbank nicht verfügbar ist, wird false zurückgegeben.Beispiele
Dreistelligen Ländercode für eine IP-Adresse ermitteln
<?php
// IP-Adresse eines deutschen Servers (Heise-Verlag)
$ip = '193.99.144.80';
$code3 = geoip_country_code3_by_name($ip);
if ($code3 !== false) {
echo 'Dreistelliger Ländercode: ' . $code3 . PHP_EOL;
} else {
echo 'Kein Ländercode gefunden.' . PHP_EOL;
}
Ländercode für einen Hostnamen ermitteln und vergleichen
<?php
// Erlaubte Länder (dreistellig) für eine Geo-Sperre
$allowed = ['DEU', 'AUT', 'CHE'];
$hostname = 'www.example.at';
$code3 = geoip_country_code3_by_name($hostname);
if ($code3 === false) {
echo 'Herkunftsland konnte nicht bestimmt werden.';
} elseif (in_array($code3, $allowed, true)) {
echo 'Zugriff erlaubt für Land: ' . $code3;
} else {
echo 'Zugriff verweigert. Ermittelter Ländercode: ' . $code3;
}
// Wichtig · Fallstricke
Verfügbarkeit: Diese Funktion ist nur verfügbar, wenn die PECL-Erweiterung geoip installiert und eine gültige GeoIP-Datenbank (z. B. von MaxMind) konfiguriert ist. Ohne diese Voraussetzungen löst der Aufruf einen fatalen Fehler aus.
Genauigkeit: IP-Geolokalisierung ist keine exakte Wissenschaft. Die Ergebnisse können ungenau sein, insbesondere bei VPN-Nutzern, Proxys oder Hosts mit dynamischen IPs. Verwende die Funktion daher nicht für sicherheitskritische Zugriffsentscheidungen.
Deprecation: Die PECL-geoip-Erweiterung wird kaum noch weiterentwickelt. Für neue Projekte empfiehlt sich die Verwendung modernerer Alternativen wie der MaxMind GeoIP2 PHP API in Kombination mit deren Datenbanken im MMDB-Format.