视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
php如何禁止一个地区ip
2020-11-02 18:28:11 责编:小采
文档


php禁止一个地区的实现方法:首先用一个变量保存访客的IP地址;然后从外界获取IP地址的详细信息;接着判断是否在拒绝访问的省份范围内;最后做出相应的响应即可。

推荐:《PHP视频教程》

PHP 禁止某个地区的 IP

之前博客有禁止过 江苏省 全省的 IP 访问

在后端, 其实使用 PHP 去判断来访者的 IP 来源, 并且做出相应的处理

实战会用到 PHP 的一些常用语法 :

条件判断

循环

数组

超全局变量

除此之外, 还会用到一些系统自带的函数

接下来讲述一下具体思路 :

1. 用一个变量保存访客的 IP 地址

2. 从外界获取 IP 地址的详细信息

3. 判断是否在拒绝访问的省份范围内

4. 做出相应的响应

首先是保存访客的 IP, 可以使用超全局变量 $_SERVER 获取访客的 IP 地址

$ip = $_SERVER['REMOTE_ADDR'];

用一个数组保存禁止访问的省份

$verification = array("xx省", "xx省", ...);

使用淘宝 IP 库, 将淘宝 IP 库(省准确度超过 99.8%, 市准确度超过 96.8%)的页面中所有的信息保存在一个字符串中

$result = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);

其中, file_get_contents() 函数将一个文件中的所有字符串保存在一个字符串中

在网页中, PHP 显示的是最终的代码返回值, 而不是显示 PHP 代码, 这与前端有所不同

保存在字符串中的很难直接拿来比较, 所以要对字符串进行处理, 最好变成一个变量

$ipInformation = json_decode($result, true);

json_decode() 函数将一个 JSON 形式的字符串转换为 PHP 变量, 这里是转化为一个二维关联数组

$address['data']['region'] 返回的就是 IP 的中文省份

最后用循环和条件判断处理拒绝访问

最后的代码 :

<?php
 $verification = array(); #array() 中填写省份, 例如 array("浙江省", "广东省")
 $ip = $_SERVER['REMOTE_ADDR'];
 $result = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);
 $address = json_decode($result, true);
 $arrayLength = count($verification);
 for(int i = 0; i < arrayLength; i++) {
 if($address['data']['region'] == $verification[$i]) {
 //TODO
 }
 }
?>

其中, TODO 中就是你对于在范围内的 IP 如何处理, 例如可以直接 die(); 来禁止页面显示

下载本文
显示全文
专题