让WordPress正确显示访客ip

最近不知道做了什么修改,在后台评论区查看访客ip时居然全部显示成本站主机所在的ip地址,原因不详

所以很难排查,只能在wp-config.php里面加入如下代码,让wp显示正确的访客ip。

/** 正确记录访客ip. */
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}

还有一种直接通过第三方API获取

采用curl模拟打开搜狐ip页面的方式正则匹配获得ip

$url = "http://txt.go.sohu.com/ip/soip";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);
$pageContent = curl_exec($ch);
$getip = array();
preg_match_all("/p=\"(.*)\";s/isU",$pageContent, $getip); 
$ip1 = (curl_getinfo($ch, CURLINFO_HTTP_CODE)==200 && isset($getip[1][0])) ? $getip[1][0] : $_SERVER['REMOTE_ADDR']; 
$_SERVER['REMOTE_ADDR'] = $ip1;

添加之后IP就会正确显示了。


WordPress