$REMOTE_ADDR一般 PHP 的参考书里都会有

解决方案 »

  1.   

    用这个函数解决吧:
    <?  
    function getIp()  
    {  
    $ip = getenv("REMOTE_ADDR");  
    $ip1 = getenv("HTTP_X_FORWARDED_FOR");  
    $ip2 = getenv("HTTP_CLIENT_IP");  
    ($ip1) ? $ip = $ip1 : null ;  
    ($ip2) ? $ip = $ip2 : null ;  
    return $ip;  

    ?> 
      

  2.   

    下面的代码是从phpAdsNew里面copy出来的,看完之后对于获得proxy和client的ip有比较全面的认识
    // Check for proxyserver
    $proxy = false; if (isset ($GLOBALS['HTTP_VIA']) && $GLOBALS['HTTP_VIA'] != '') $proxy = true; if (isset ($GLOBALS['REMOTE_HOST'])) { if (is_int (strpos ('proxy',   $GLOBALS['REMOTE_HOST']))) $proxy = true; if (is_int (strpos ('cache',   $GLOBALS['REMOTE_HOST']))) $proxy = true; if (is_int (strpos ('inktomi', $GLOBALS['REMOTE_HOST']))) $proxy = true; } if ($proxy) { // Overwrite host address if a suitable header is found if (isset($GLOBALS['HTTP_FORWARDED']) &&  $GLOBALS['HTTP_FORWARDED'] != '')  $IP = $GLOBALS['HTTP_FORWARDED']; if (isset($GLOBALS['HTTP_FORWARDED_FOR']) && $GLOBALS['HTTP_FORWARDED_FOR'] != '')  $IP = $GLOBALS['HTTP_FORWARDED_FOR']; if (isset($GLOBALS['HTTP_X_FORWARDED']) && $GLOBALS['HTTP_X_FORWARDED'] != '')  $IP = $GLOBALS['HTTP_X_FORWARDED']; if (isset($GLOBALS['HTTP_X_FORWARDED_FOR']) && $GLOBALS['HTTP_X_FORWARDED_FOR'] != '') $IP = $GLOBALS['HTTP_X_FORWARDED_FOR']; if (isset($GLOBALS['HTTP_CLIENT_IP']) && $GLOBALS['HTTP_CLIENT_IP'] != '')  $IP = $GLOBALS['HTTP_CLIENT_IP']; // Get last item from list $IP = explode (',', $IP); $IP = trim($IP[count($IP) - 1]); if ($IP != 'unknown') { $GLOBALS['REMOTE_ADDR'] = $IP; $GLOBALS['REMOTE_HOST'] = ''; } }