一树的随想、生活与资料存档。
WordPress无法正确记录访客IP
这个问题困扰我很久了,特别是近来发垃圾评论的人增多,想封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。
| 打印文章 | 这篇文章由一树于2009-07-03 15:37发表在技术文档。你可以订阅RSS 2.0 也可以发表评论或引用到你的网站。 |