Signatur
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
geoipmuss 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
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.";
}
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
// 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.