屏蔽中国地区ip的方法
2018-09-11
namespace ip;
use think\Request;
class Shielded{
public function doGet($url){
//初始化
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
// 执行后不直接打印出来
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
// 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// 不从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
//执行并获取HTML文档内容
$output = curl_exec($ch);
//释放curl句柄
curl_close($ch);
return $output;
}
/**
* [is_china 通过自动获取ip,再判断ip是否是中国的]
* @Author lmkj
* @DateTime 2018-09-04
* @copyright [lmkj]
* @license [lmkj]
* @version [version]
* @return boolean [返回code和msg]
*/
public function is_china(){
//获取ip
$ip = request()->ip();
if (!$ip) {
return ["code" => 0, "msg" => "获取不到ip"];
}
//通过ip检测是不是中国的
$taobao_param["ip"] = $ip;
$taobao_ip = $this->doGet("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);
$taobao_ip=json_decode($taobao_ip,true);
// dump($taobao_ip);
if ($taobao_ip["code"] == 0) {
if ($taobao_ip["data"]["country"] == "中国") {
return ["code" => 1, "msg" => "ip是中国的!"];
}else{
return ["code" => 0, "msg" => "ip是不是中国或者为未查询到"];
}
}else{
return ["code" => 0, "msg" => "查询失败"];
}
}
}
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。
http://www.pinlue.com/style/images/nopic.gif