本帖最后由 zhoushiyao26 于 2009-12-02 16:41:17 编辑

解决方案 »

  1.   

    PHP读取客户端用户IP的方法 
    一句话: 
    $_SERVER["REMOTE_ADDR"] 或者: 
    $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; 
    $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; 如果想获取真实IP(即使客户用了代理服务器),使用以下函数: <? 
    function iptype1 () { 
    if (getenv("HTTP_CLIENT_IP")) { 
    return getenv("HTTP_CLIENT_IP"); 

    else { 
    return "none"; 


    function iptype2 () { 
    if (getenv("HTTP_X_FORWARDED_FOR")) { 
    return getenv("HTTP_X_FORWARDED_FOR"); 

    else { 
    return "none"; 


    function iptype3 () { 
    if (getenv("REMOTE_ADDR")) { 
    return getenv("REMOTE_ADDR"); 

    else { 
    return "none"; 


    function ip() { 
    $ip1 = iptype1(); 
    $ip2 = iptype2(); 
    $ip3 = iptype3(); 
    if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") { 
    return $ip1; 

    elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") { 
    return $ip2; 

    elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") { 
    return $ip3; 

    else { 
    return "none"; 

    } Echo ip(); 
    ?>  
      

  2.   

    搞清楚你自己的网络拓扑,这个和PHP无关
      

  3.   

    无意中,我也遇到这问题了。
    访问IP138与写了一个获取IP的php程序,IP地址竟然不一样。用上面的程序获取也一样错误。
      

  4.   

        长宽是共享IP的。因为这点像花生壳一类的软件根本无法使用!电信的一般不会有这样的问题,但是针对这种共享IP。如果想获取到真实IP,关键点我认为还是在这个IP上。我们自己在本机上看的IP。也许未必是自己的真实IP。出口点和分配到本机上的未必一样,核心我认为是共享IP与独立IP的区别!我个人是这样猜测的。