2013-10-11 104 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

相关问题