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
Freigeben: 2024-12-17 05:33:25
Original
737 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage