2011-02-11 53 views
4

在我的生產現場,我保持了日誌的用戶在訪問我的網站(如登錄,註銷)及其IP address.I'm使用$_SERVER['REMOTE_ADDR']獲取IP。它存儲訪問者的準確IP前,但突然這個變量開始返回我所有的客戶10.10.10.10

它是由01-31-2011.

發生可能是什麼原因造成的?

服務器信息:LAMP 編輯: 現在我有以下功能它也返回相同10.10.10.10

function GetIP() 
{ 
     if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), 
"unknown")) 
       $ip = getenv("HTTP_CLIENT_IP"); 
     else if (getenv("HTTP_X_FORWARDED_FOR") && 
strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) 
       $ip = getenv("HTTP_X_FORWARDED_FOR"); 
     else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) 
       $ip = getenv("REMOTE_ADDR"); 
     else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && 
strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) 
       $ip = $_SERVER['REMOTE_ADDR']; 
     else 
       $ip = "unknown"; 
     return($ip); 
} 

感謝

+0

這一切都取決於你的環境。你在哪裏舉辦?你有沒有把代理放在它前面? – 2011-02-11 06:57:33

+0

你有一個新的路由器或類似的? – 2011-02-11 07:00:11

回答

0

也就是說IP是一個IANA「黑洞」地址 - 沒有人使用它,它不被視爲一個有效的公共IP地址。通常,它在代碼中用作IP的佔位符,或用於模擬代碼。

你確定你沒有使用的代碼的地方,是覆蓋該值的片段?檢查一下意外的if($_SERVER['REMOTE_ADDR'] = '10.0.10.10')(注意單個等號)。總之 - 這個地址不可能是合法的。

據,但是,合法的,以作爲一個內部IP使用。正如其他人所建議的,這可能是內部請求路由的結果。檢查您的主機,看看網絡結構是否有任何變化。

-2

如果您(或您的提供商)加入負載平衡器然後REMOTE_ADDR會顯示平衡器的IP地址。爲了讓用戶使用IP地址而不是REMOTE_IP