Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich die IP-Adresse eines Clients in PHP zuverlässig abrufen?

Wie kann ich die IP-Adresse eines Clients in PHP zuverlässig abrufen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-06 14:10:16988Durchsuche

How to Reliably Retrieve a Client's IP Address in PHP?

IP-Adresse des Clients in PHP abrufen

PHPs $_SERVER Superglobal bietet eine Methode zum Abrufen der IP-Adresse von Website-Besuchern. Bei Verwendung des herkömmlichen $_SERVER['REMOTE_ADDR']-Ansatzes können jedoch falsche IP-Adressen zurückgegeben werden. Diese Diskrepanz kann auf mehrere Faktoren zurückgeführt werden, darunter Proxyserver und Load Balancer.

Um eine genaue IP-Adresse zu erhalten, ziehen Sie alternative Servervariablen in Betracht. Die folgenden beiden Funktionen sind austauschbar und zeigen, wie das geht:

Verwenden von getenv():

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;
}

Verwenden von $_SERVER:

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;
}

Diese Funktionen priorisieren die zuverlässigste IP-Adressoption, die in den Servervariablen verfügbar ist, und stellen so eine genaue Darstellung sicher die IP-Adresse des Clients.

Das obige ist der detaillierte Inhalt vonWie kann ich die IP-Adresse eines Clients in PHP zuverlässig abrufen?. 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