本人购买了厦门的VPS,是内网IP,通过映射的。我用PHP的$_SERVER['REMOTE_ADDR']函数获取用户IP,老是获取到得是(10.0.0.1 ),要怎么解决呢?现在phpwind论坛发帖的IP都显示成:10.0.0.1    我快崩溃啦!!

解决方案 »

  1.   

    呵呵!我的一台服务器也是在通过映射的。
    在服务器里获取IP 只能获取服务器内网的IP,
    你必须在你的个人电脑里做测试 不要在服务器里做测试。
    刚才我在我的服务器里做过测试,获取的IP是服务器的内网IP
    然后又在自己电脑里测试IP,获取的是我这里的IP。实在想不出什么好办法,只能给你的VPS提供商申请帮助了。或许他们可以帮你解决此问题。
      

  2.   

    我是在外网发贴.我的58.46.70.*,都PHPWIND获取的是10.0.0.1,还有单独$_SERVER['REMOTE_ADDR']也是一样.服务器商说是VPS映射原因。
      

  3.   

     function GetIP() {
            if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
                $ip = getenv("HTTP_CLIENT_IP");
            else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
                $ip = getenv("HTTP_X_FORWARDED_FOR");
            else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
                $ip = getenv("REMOTE_ADDR");
            else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
                $ip = $_SERVER['REMOTE_ADDR'];
            else
                $ip = "unknown";
           return($ip);
        }