2013-10-11 136 views
3

$ _SERVER ['REMOTE_ADDR']返回127.0.0.1。

是因爲我安裝了清漆緩存和數據去清漆,然後Apache和服務器認爲請求來自清漆不客戶端?

+0

我不知道光油但可能是案例..我有這個問題時,使用nginx作爲負載平衡器..只是print_r $ _SERVER超全球..你會發現IP在不同的領域..像X_FORWARDED_FOR – mishu

回答

12

獲取遠程IP地址是這樣的:

public function getRemoteIPAddress() { 
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) { 
     return $_SERVER['HTTP_CLIENT_IP']; 

    } else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
     return $_SERVER['HTTP_X_FORWARDED_FOR']; 
    } 
    return $_SERVER['REMOTE_ADDR']; 
} 
+0

對不起downvote,但這是不好的建議。請參閱[@ Ka。的答案](http://stackoverflow.com/a/372​​54156/2032498)。另外,'HTTP_CLIENT_IP'可以來自客戶端,因此不可靠。一般來說,首先確保'REMOTE_ADDR'是可信的主機。只有這樣你才能依賴更多的HTTP頭文件,比如'X_FORWARDED_FOR'。 – Kontrollfreak

相關問題