访问者的IP

时间:2017-07-18 15:45:28

标签: php

我有一个PHP脚本,我使用了几个星期,这使我能够捕获访问我的网站的人的IP,但几天后(我的印象是,因为我激活了选项“CDN我的主机服务器OVH上的+ HTTP / 2“我的脚本返回了我的web主机OVH的多个公共IP地址之一。

这是脚本:

    function get_ip() {
        if (getenv('HTTP_X_FORWARDED_FOR')) {
            $ip = getenv('HTTP_X_FORWARDED_FOR');
        }
        elseif (getenv('HTTP_CLIENT_IP')) {
            $ip = getenv('HTTP_CLIENT_IP');
        }
        elseif (getenv('HTTP_X_COMING_FROM')) {
            $ip = getenv('HTTP_X_COMING_FROM');
        }
        elseif (getenv('HTTP_VIA')) {
            $ip = getenv('HTTP_VIA');
        }
        elseif (getenv('HTTP_XROXY_CONNECTION')) {
            $ip = getenv('HTTP_XROXY_CONNECTION');
        }
        else {
            $ip = getenv('REMOTE_ADDR');
        }
        return $ip;
    }

    $ip = get_ip();

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

好的,解决方案。

function get_ip() {
    if (getenv('HTTP_CLIENT_IP')) {
        $ip = getenv('HTTP_CLIENT_IP');
    }
    elseif (getenv('HTTP_X_COMING_FROM')) {
        $ip = getenv('HTTP_X_COMING_FROM');
    }
    elseif (getenv('HTTP_VIA')) {
        $ip = getenv('HTTP_VIA');
    }
    elseif (getenv('HTTP_XROXY_CONNECTION')) {
        $ip = getenv('HTTP_XROXY_CONNECTION');
    }
    elseif (getenv('REMOTE_ADDR')) {
        $ip = getenv('REMOTE_ADDR');
    }
    else {
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    }
    return $ip;
}

$ip = get_ip();