<?
 if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"] != "")
 { 
       $IP = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; 
       $proxy = $HTTP_SERVER_VARS["REMOTE_ADDR"]; 
       $host = @gethostbyaddr($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]); 
 }
 else
 { 
       $IP = $HTTP_SERVER_VARS["REMOTE_ADDR"]; 
       $host = @gethostbyaddr($HTTP_SERVER_VARS["REMOTE_ADDR"]); 
 }
?>

解决方案 »

  1.   

    如果仍然不行,和NSLOOKUP配合使用<?
    function dns_lookup($ip)
    {
    $res='nslookup -timeout=3 -retry=1 $ip';
    if (preg_match('/\nName:(.*)\n/', $res, $out))
    {
    return trim($out[1]);
    }
    else
    {
    return $ip;
    }
    }if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"] != "")

    $IP = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; 
    $proxy = $HTTP_SERVER_VARS["REMOTE_ADDR"]; 
    $host = dns_lookup($IP);
    }
    else

    $IP = $HTTP_SERVER_VARS["REMOTE_ADDR"]; 
    $host = dns_lookup($IP);
    }
    echo $host;
    ?>
      

  2.   

    timeout=3  //超时时间
    retry=1    //重试次数自己根据需要设
      

  3.   

    先谢谢!不过返回的还是代理服务器的对internet的ip地址。
      

  4.   

    你在代理服务器上试下面的命令nslookup -timeout=3 -retry=1 你的IP看返回什么
      

  5.   

    这个看到的是dns服务器地址,不是本机地址。
      

  6.   

    192.168.x.x不可能出现在公网上,所以你至多得到离你最近的代理服务器的ip地址
      

  7.   

    程序只要跟內網在同一網域就能讀到內網的IP 
    而連出去的話內網的 IP 會變成連外的 IP 不在是 192.168.*.* 開頭的。