WordPress无法正确记录访客IP

这个问题困扰我很久了,特别是近来发垃圾评论的人增多,想封IP都变得不可能,因为WordPress在后台记录的IP统统为127.0.0.1,在其他主机上都很正常,很肯定是主机商的问题。
找了客服同志,客服找技术支持,给的答复是:
把以下代码加到wp-config.php开头

  1. if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
  2. {
  3. $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
  4. $_SERVER['REMOTE_ADDR'] = $list[0];
  5. }

太神奇了~~
最后,客服说,高难度的事都要找那位技术人员……

解读一下,$_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。

WordPress无法正确记录访客IP》上有 6 条评论

  1. Pingback 引用通告: WordPress无法正确记录访客IP – 2哥'S Blog~~要做就要做这个行业的专家

    • $_SERVER['HTTP_X_FORWARDED_FOR']是服务器环境变量,客户端在连接服务器端的时候,这个值就被记录,然后传递到php变量里,所以不会被伪装。如果客户端使用代理服务器,记录的就是代理服务器的IP地址。

  2. Pingback 引用通告: 让wordpress正确记录访客IP地址 « 梦园部落格

  3. Pingback 引用通告: 蚊子世界 » Blog Archive » 解决wordpress正确记录访客IP地址

  4. Pingback 引用通告: 蚊子世界(测试站) » Blog Archive » 解决wordpress正确记录访客IP地址

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>