首頁 >後端開發 >php教程 >如何取得代理商背後的真實訪客IP位址?

如何取得代理商背後的真實訪客IP位址?

Barbara Streisand
Barbara Streisand原創
2024-11-06 17:54:02344瀏覽

How to Get the Real Visitor IP Address Behind Proxies?

取得代理背後的真實訪客IP

如果訪客使用代理,標準PHP 方法$_SERVER['REMOTE_ADDR'] 可能不會提供實際訪客IP 位址。要解決此問題,請考慮使用以下 PHP 程式碼:

<code class="php">function getUserIP()
{
    // Handle CloudFlare network
    if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
        $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
        $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
    }

    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];

    if(filter_var($client, FILTER_VALIDATE_IP))
    {
        $ip = $client;
    }
    elseif(filter_var($forward, FILTER_VALIDATE_IP))
    {
        $ip = $forward;
    }
    else
    {
        $ip = $remote;
    }

    return $ip;
}

$user_ip = getUserIP();

echo $user_ip; // Output real visitor IP address</code>

此程式碼檢查 CloudFlare 網路並相應地調整 IP 位址。然後,它會依序檢查 HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR,並優先考慮格式有效的 IP。透過實現此程式碼,您可以獲得真實的訪客 IP 位址,即使他們位於代理程式後面。

以上是如何取得代理商背後的真實訪客IP位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn