php禁止国外访问,wordpress 禁止国外ip访问
一般做國內站,國外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判斷那里直接使用的是阿里的頁面,也可以改成自定義的
總結
以上是生活随笔為你收集整理的php禁止国外访问,wordpress 禁止国外ip访问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab计算方程fsolve,mat
- 下一篇: php怎么定义索引,PHP未定义的索引/