首页>>代码记录

php屏蔽指定省份地区访问网站方法

2024-02-18 04:39:19 1450

网站开发时可能需要屏蔽一些地区访问,要想禁止指定地区访问网站,可以在nginx里设置规则,也可以使用php来实现屏蔽指定地区访问网站,那么如何使用php禁止指定省份访问网站?php屏蔽指定地区访问网站方法是什么?

禁止指定省份访问网站php代码,复制下方代码到你需要的地方,然后修改省份名称,当访问者的ip属于指定的省份则显示404状态,代码只是简单例子,如需设置指定省份可访问,可修改下判断条件。

<?php
/*
 * 禁止指定省份访问网站
 * author:自学成才
 * url:zxcc.net
 */
$ip = getClientIP();
$ipdat = CurlIP($ip);
$ipjson = json_decode($ipdat,1);
$ipdizhi = $ipjson['province'];
if($ipdizhi && preg_match('/(陕西|山西|广东)/', $ipdizhi)){
   header("HTTP/1.1 404 Not Found");
   header("Status: 404 Not Found");
   exit();
}
function CurlIP($ip){
  $url = "https://restapi.amap.com/v3/ip?key=0113a13c88697dcea6a445584d535837&ip=".$ip;
  $curl = curl_init();
  $headers = array(
    "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36 ",
  );
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
  curl_setopt($curl, CURLOPT_HTTPHEADER,$headers);
  curl_setopt($curl, CURLOPT_REFERER, $url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  $response = curl_exec($curl);
  curl_close($curl);
  return $response;
}
function getClientIP(){
	if (getenv('HTTP_CLIENT_IP')) {
		$ip = getenv('HTTP_CLIENT_IP');
	} elseif (getenv('HTTP_X_FORWARDED_FOR')) {
		$ip = getenv('HTTP_X_FORWARDED_FOR');
	} elseif (getenv('HTTP_X_FORWARDED')) {
		$ip = getenv('HTTP_X_FORWARDED');
	} elseif (getenv('HTTP_FORWARDED_FOR')) {
		$ip = getenv('HTTP_FORWARDED_FOR');
	} elseif (getenv('HTTP_FORWARDED')) {
		$ip = getenv('HTTP_FORWARDED');
	} else {
		$ip = $_SERVER['REMOTE_ADDR'];
	}
	
	return $ip;
}




版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

相关标签: PHP

登陆
还没有账号?立即注册
忘记密码?
忘记密码
已经有账号?马上登陆
获取验证码
注册
已经有账号?马上登陆 获取邀请码