首页  >  文章  >  后端开发  >  使用代理时如何获取真实访客IP地址?

使用代理时如何获取真实访客IP地址?

Barbara Streisand
Barbara Streisand原创
2024-11-04 13:39:01786浏览

How to Get the Real Visitor IP Address When Proxies Are in Use?

尽管使用代理,仍检索真实访客 IP 地址

通常用于获取访客 IP 地址的 PHP 代码是:

<code class="php"><?php echo $_SERVER['REMOTE_ADDR']; ?></code>

但是,当代理运行时,此方法无法捕获真实IP。为了寻求此问题的解决方案,让我们深入研究替代方法。

用于 IP 确定的自定义 PHP 函数

考虑到 CloudFlare 连接,提供的 PHP 代码提供了全面的解决方案以及各种其他因素:

<code class="php">function getUserIP()
{
    // Handle CloudFlare connections
    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();</code>

此代码将 IP 地址分配给变量 $user_ip,然后可以根据需要在 PHP 脚本中使用该变量。

以上是使用代理时如何获取真实访客IP地址?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn