Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich die IP-Adresse eines Clients in PHP genau bestimmen?

Wie kann ich die IP-Adresse eines Clients in PHP genau bestimmen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-17 05:33:25779Durchsuche

How Can I Accurately Determine a Client's IP Address in PHP?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn