使用代理获取客户端IP地址 - PHP5.4.4-14 + APACHE 2.2.22-13 + Debian 7 + HTTPS

问题描述 投票:1回答:2

我尝试了每个代码并阅读了有关此主题的所有帖子,但没有解决我的问题。

当浏览器选项“使用内部网站点的代理”打开时,代码无法获得真正的IP。 它向我展示了PROXY IP ......

码:

function get_ip_address()
{
    $aa = array ( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', // 'HTTP_HOST', 'REMOTE_ADDR');

    foreach ($aa as $key) {
        if (array_key_exists($key, $_SERVER) === true) {
            foreach (explode(',', $_SERVER[$key]) as $ip) {
                if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
                    return $ip;
                }
            }
        }
    }
}
#endfunc

echo get_ip_address();
php apache2.2
2个回答
0
投票

那么,这就是代理的目的。您无法可靠地获取用户的IP地址,即使可以,您的意思是他们的WAN地址吗?或者任意数量的LAN地址之一?在一般情况下,这是一个难以解决的问题。


-1
投票
public function GetClientIP()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))
    //check ip from share internet
    {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    //to check ip is pass from proxy
    {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}
© www.soinside.com 2019 - 2024. All rights reserved.