一般做国内站,国外ip都是来攻击或撞库的,没有国外用户的需求,就可以在进入网站时进行ip检查,如果是国外ip就禁止访问
阿里提供了一个查询ip归属的接口,可以用来获取当前ip的真实地址,但对访问速度会有一定影响
以下内容放到主题的function.php中
/**
* WordPress 显示评论者IP归属地PHP函数
* https://www.aliuyun.cn/wordpress/wordpress-course/management/jinzhi-waiguo-ip.html
**/
function aliuyun_getRealIp()
{
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
function aliuyun_locate($ip) {
$ip=aliuyun_getRealIp();
if(empty($ip)) $ip = get_comment_author_IP();
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
$result = json_decode($file_contents,true);
if ($result['data']['country'] != '中国') {
wp_redirect( 'https://www.aliuyun.cn/aliuyun-news/womenshizhongguoren.html' );
} else {
echo '';
}
}
add_action( 'wp_footer', 'aliuyun_locate' );
最后if判断那里直接使用的是阿里的页面,也可以改成自定义的
网友评论