Bestimmen der IP-Adresse des Clients in PHP
Das superglobale PHP-Array $_SERVER bietet Zugriff auf verschiedene serverbezogene Informationen, einschließlich der Remote-Adresse des Clients IP-Adresse über $_SERVER['REMOTE_ADDR']. Dieser Ansatz kann jedoch in bestimmten Szenarien unzureichend sein.
In Fällen, in denen der Wert $_SERVER['REMOTE_ADDR'] falsch ist, können alternative Servervariablen verwendet werden, um die IP-Adresse genau zu ermitteln. Im Folgenden werden zwei Ansätze untersucht:
Verwendung der Funktion getenv():
Die Funktion getenv() ruft den Wert einer Umgebungsvariablen ab. Es kann wie folgt verwendet werden, um die IP-Adresse des Clients zu erhalten:
function get_client_ip() { $ipaddress = ''; if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); else if(getenv('HTTP_X_FORWARDED')) $ipaddress = getenv('HTTP_X_FORWARDED'); else if(getenv('HTTP_FORWARDED_FOR')) $ipaddress = getenv('HTTP_FORWARDED_FOR'); else if(getenv('HTTP_FORWARDED')) $ipaddress = getenv('HTTP_FORWARDED'); else if(getenv('REMOTE_ADDR')) $ipaddress = getenv('REMOTE_ADDR'); else $ipaddress = 'UNKNOWN'; return $ipaddress; }
Verwendung des Superglobal-Arrays $_SERVER:
Das Array $_SERVER enthält HTTP-Anforderungsinformationen. Der folgende Code demonstriert seine Verwendung beim Abrufen der IP-Adresse:
function get_client_ip() { $ipaddress = ''; if (isset($_SERVER['HTTP_CLIENT_IP'])) $ipaddress = $_SERVER['HTTP_CLIENT_IP']; else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; else if(isset($_SERVER['HTTP_X_FORWARDED'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED']; else if(isset($_SERVER['HTTP_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_FORWARDED_FOR']; else if(isset($_SERVER['HTTP_FORWARDED'])) $ipaddress = $_SERVER['HTTP_FORWARDED']; else if(isset($_SERVER['REMOTE_ADDR'])) $ipaddress = $_SERVER['REMOTE_ADDR']; else $ipaddress = 'UNKNOWN'; return $ipaddress; }
Beide Ansätze bieten die gleiche Funktionalität, unterscheiden sich jedoch darin, wie sie auf die Informationen zugreifen.
Das obige ist der detaillierte Inhalt vonWie kann ich die IP-Adresse eines Clients in PHP genau bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!