这个问题困扰我很久了,特别是近来发垃圾评论的人增多,想封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。
Pingback 引用通告: WordPress无法正确记录访客IP – 2哥'S Blog~~要做就要做这个行业的专家
那么$_SERVER[‘HTTP_X_FORWARDED_FOR’值不是会被伪装么
$_SERVER['HTTP_X_FORWARDED_FOR']是服务器环境变量,客户端在连接服务器端的时候,这个值就被记录,然后传递到php变量里,所以不会被伪装。如果客户端使用代理服务器,记录的就是代理服务器的IP地址。
Pingback 引用通告: 让wordpress正确记录访客IP地址 « 梦园部落格
Pingback 引用通告: 蚊子世界 » Blog Archive » 解决wordpress正确记录访客IP地址
Pingback 引用通告: 蚊子世界(测试站) » Blog Archive » 解决wordpress正确记录访客IP地址