我想获取公共IP,但apache2获取私有IP

时间:2013-04-05 22:48:56

标签: php apache ip

我想获取用户的公共IP地址,但我的代码获取私有IP ...你知道这是什么问题吗?

我的代码:

function get_ip()
{
        $ips = "";

        if(isset($_SERVER["HTTP_CLIENT_IP"]))
            $ips .= ';'.$_SERVER["HTTP_CLIENT_IP"];

        if(isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
            $ips .= ';'.$_SERVER["HTTP_X_FORWARDED_FOR"];

        if(isset($_SERVER["HTTP_X_FORWARDED"]))
            $ips .= ';'.$_SERVER["HTTP_X_FORWARDED"];

        if(isset($_SERVER["HTTP_FORWARDED_FOR"]))
            $ips .= ';'.$_SERVER["HTTP_FORWARDED_FOR"];

        if(isset($_SERVER["HTTP_FORWARDED"]))
            $ips .= ';'.$_SERVER["HTTP_FORWARDED"];

        if(isset($_SERVER["REMOTE_ADDR"]))
            $ips .= ';'.$_SERVER["REMOTE_ADDR"];

    return $ips;

}

有时函数返回ip为“10.46.40.246”...什么是获取公共IP的最佳方法? 谢谢你!

1 个答案:

答案 0 :(得分:0)

您所看到的异常可能来自办公环境中代理背后的人。如果您总是想要公共IP,那么您可能只需要REMOTE_ADDR。我想如果它在私有IP块中返回某些内容,你也可以使用这个函数并返回REMOTE_ADDR