如果用户用普通匿名代理服务器访问的话,$_SERVER['REMOTE_ADDR']记录的是代理服器的IP,用户真实IP在$_SERVER['HTTP_X_FORWARDED_FOR'];里

解决方案 »

  1.   

    //取得用户的真实的internet IP
    function getTrueIp() {
       /*
       author:[email protected]
       内网IP
      A 类10.0.0.0~10.255.255.255
      B 类172.16.0.0~172.131.255.255
      C 类192.168.0.0~192.168.255.255
        */        if(isset($_SERVER[HTTP_X_FORWARDED_FOR]))
            {
                    $ips = explode(", ", $_SERVER[HTTP_X_FORWARDED_FOR]);
                    if(ereg('^10\.',$ips[0]) || ereg('^172\.16\.[0-131]\.',$ips[0]) || ereg('^192\.168\.',$ips[0]))
                    {
                            if(count($ips)==1)
                                    return $_SERVER[REMOTE_ADDR];
                            else
                                    return $ips[1];
                    }
                    else
                            return $ips[0];
            }
            else
                    return $_SERVER[REMOTE_ADDR];
    }
      

  2.   

    先谢谢这位朋友,又让我学了点东西。
    $_SERVER['HTTP_X_FORWARDED_FOR'];这个东西在手册上怎么找不到啊?