2017-07-18 81 views
-1

我有一個PHP腳本,我使用了幾個星期,並允許我捕捉訪問我的網站的人的IP,但幾天後(我的印象是,因爲我激活我的主機服務器OVH上的選項「CDN + HTTP/2」),我的腳本返回了我的虛擬主機OVH的多個公共IP地址之一。IP訪問者

這裏的腳本:

function get_ip() { 
     if (getenv('HTTP_X_FORWARDED_FOR')) { 
      $ip = getenv('HTTP_X_FORWARDED_FOR'); 
     } 
     elseif (getenv('HTTP_CLIENT_IP')) { 
      $ip = getenv('HTTP_CLIENT_IP'); 
     } 
     elseif (getenv('HTTP_X_COMING_FROM')) { 
      $ip = getenv('HTTP_X_COMING_FROM'); 
     } 
     elseif (getenv('HTTP_VIA')) { 
      $ip = getenv('HTTP_VIA'); 
     } 
     elseif (getenv('HTTP_XROXY_CONNECTION')) { 
      $ip = getenv('HTTP_XROXY_CONNECTION'); 
     } 
     else { 
      $ip = getenv('REMOTE_ADDR'); 
     } 
     return $ip; 
    } 

    $ip = get_ip(); 

謝謝您的幫助

+0

您可以將其全部轉儲並查看出了什麼問題。 –

+0

我把getenv('HTTP_X_FORWARDED_FOR')放在最後,它可以工作......謝謝;) – Chrys

回答

1

好,解決方案。

function get_ip() { 
    if (getenv('HTTP_CLIENT_IP')) { 
     $ip = getenv('HTTP_CLIENT_IP'); 
    } 
    elseif (getenv('HTTP_X_COMING_FROM')) { 
     $ip = getenv('HTTP_X_COMING_FROM'); 
    } 
    elseif (getenv('HTTP_VIA')) { 
     $ip = getenv('HTTP_VIA'); 
    } 
    elseif (getenv('HTTP_XROXY_CONNECTION')) { 
     $ip = getenv('HTTP_XROXY_CONNECTION'); 
    } 
    elseif (getenv('REMOTE_ADDR')) { 
     $ip = getenv('REMOTE_ADDR'); 
    } 
    else { 
     $ip = getenv('HTTP_X_FORWARDED_FOR'); 
    } 
    return $ip; 
} 

$ip = get_ip(); 
+1

是的,這是解決方案^^ – Chrys