WordPress无法正确记录访客IP
转自:http://www.onono.org/2009/07/181.htm
这个问题困扰我很久了,特别是近来发垃圾评论的人增多,想封IP都变得不可能,
因为WordPress在后台记录的IP统统为127.0.0.1,在其他主机上都很正常,很肯定是主机商的问题。
找了客服同志,客服找技术支持,给的答复是:
把以下代码加到wp-config.php开头
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = $list[0]; }
太神奇了~~ 最后,客服说,高难度的事都要找那位技术人员…… 解读一下,
$_SERVER['HTTP_X_FORWARDED_FOR']和$_SERVER['REMOTE_ADDR']都是用于获取客户端IP的,全局变量,因此可以直接调用。 $_SERVER['REMOTE_ADDR']是正在浏览当前页面用户的 IP 地址,
由于服务器自身启用了反向代理,所以这个变量始终记录IP为127.0.0.1。
$_SERVER["HTTP_X_FORWARDED_FOR"]用于获取使用代理服务器用户的IP,但有时读取的仍然是代理服务器本身的IP。
如果$_SERVER['HTTP_X_FORWARDED_FOR']存在,
则用它替代$_SERVER['REMOTE_ADDR'],WordPress在记录IP的时候,
就能正确的引用$_SERVER['REMOTE_ADDR']变量的值,正确记录IP。