首页 >后端开发 >php教程 >如何获取代理背后的真实访客IP地址?

如何获取代理背后的真实访客IP地址?

Barbara Streisand
Barbara Streisand原创
2024-11-06 17:54:02350浏览

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