Start · Sprachen · PHP · Referenz · geoip_country_name_by_name

geoip_country_name_by_name

Funktion

Liefert den vollständigen englischen Ländernamen zu einem Hostnamen oder einer IP-Adresse anhand der GeoIP-Datenbank.

seit PHP 1.0.0 Kategorie: misc

Signatur

geoip_country_name_by_name(string $hostname): string|false

Beschreibung

geoip_country_name_by_name() gehört zur PECL-Erweiterung geoip und ermöglicht es, zu einem gegebenen Hostnamen oder einer IPv4-Adresse den zugehörigen vollständigen Ländernamen (auf Englisch) zu ermitteln. Intern wird dafür die MaxMind GeoIP-Datenbank verwendet, die lokal auf dem Server installiert sein muss.

Die Funktion ist nützlich, wenn Sie Besucher Ihrer Webanwendung nach ihrem Herkunftsland identifizieren möchten, etwa für länderspezifische Inhalte, Zugriffsbeschränkungen oder Analysezwecke. Im Gegensatz zu geoip_country_code_by_name(), die nur den zweistelligen ISO-Ländercode zurückgibt, erhalten Sie hier den ausgeschriebenen Ländernamen (z. B. Germany oder United States).

Beachten Sie, dass die Genauigkeit der Ergebnisse vollständig von der Version und Aktualität der installierten GeoIP-Datenbank abhängt. Bei Hostnamen wird zunächst eine DNS-Auflösung durchgeführt, bevor die IP in der Datenbank nachgeschlagen wird.

  • Die PECL-Erweiterung geoip muss installiert und aktiviert sein.
  • Die GeoIP-Datenbank (z. B. GeoIP.dat) muss auf dem Server vorhanden sein.
  • Als Alternative empfiehlt sich für neue Projekte die Bibliothek MaxMind GeoIP2 PHP API, da die PECL-Erweiterung als veraltet gilt.

Parameter

Name Typ Default Beschreibung
$hostname Pflicht string Der Hostname oder die IPv4-Adresse, für die der Ländername ermittelt werden soll. Wird ein Hostname übergeben, erfolgt intern eine DNS-Auflösung zur IP-Adresse.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den vollständigen englischen Ländernamen als string zurück (z. B. Germany), wenn der Eintrag in der GeoIP-Datenbank gefunden wurde. Gibt false zurück, wenn der Hostname nicht aufgelöst werden konnte oder kein Eintrag in der Datenbank vorhanden ist.

Beispiele

Ländernamen einer IP-Adresse ermitteln

<?php
// Voraussetzung: PECL-Erweiterung geoip ist installiert und GeoIP-Datenbank vorhanden

$ip = '217.69.143.135'; // Beispiel-IP (russischer Mailserver)
$countryName = geoip_country_name_by_name($ip);

if ($countryName !== false) {
    echo "Das Land für IP {$ip} ist: " . $countryName;
} else {
    echo "Land konnte nicht ermittelt werden.";
}
Das Land für IP 217.69.143.135 ist: Russia

Besucherzugriff nach Herkunftsland protokollieren

<?php
// Herkunftsland des aktuellen Besuchers bestimmen

$visitorIp = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
$country = geoip_country_name_by_name($visitorIp);

if ($country !== false) {
    echo "Besucher kommt aus: " . htmlspecialchars($country, ENT_QUOTES, 'UTF-8');
} else {
    echo "Herkunftsland unbekannt.";
}

// Für lokale/private IPs liefert GeoIP typischerweise false
// Beispielausgabe für eine deutsche IP:
// Besucher kommt aus: Germany
Besucher kommt aus: Germany

// Wichtig · Fallstricke

Veraltete Erweiterung: Die PECL-Erweiterung geoip wird nicht mehr aktiv gepflegt. Für neue Projekte sollte stattdessen die offizielle MaxMind GeoIP2 PHP-Bibliothek oder ein entsprechender Webdienst verwendet werden.

Datenbankaktualität: Die zurückgegebenen Daten sind nur so aktuell wie die installierte GeoIP-Datenbank. Veraltete Datenbanken können zu falschen Ergebnissen führen, da IP-Zuweisungen sich regelmäßig ändern.

Ausgabe-Escaping: Der zurückgegebene Ländername sollte bei der Ausgabe in HTML stets mit htmlspecialchars() gesichert werden, auch wenn die Werte aus der GeoIP-Datenbank stammen.

IPv6: Die klassische GeoIP-Erweiterung unterstützt IPv6 nur eingeschränkt. Für vollständige IPv6-Unterstützung sind neuere Alternativen zu bevorzugen.