百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

[技术交流] php禁止多个IP访问,如何实现通配符 [复制链接]
查看:614 | 回复:9

落伍网友
落伍网友  发表于 2022-10-24 15:44:05 |阅读模式 来自 中国广东深圳
下面是我的代码只能完整IP的禁止访问不能支持通配符

  1. <?php
  2. $webip = "192.168.1.2|219.152.195.208|59.36.178.107";//禁止IP列表
  3. $ip="192.168.1.1";//用户的IP
  4. function IsNul($str){
  5.         if (!is_string($str)) return false; /*是否是字符串类型*/
  6.         if (empty($str)) return false; /*是否已设定*/
  7.         if ($str=='') return false; /*是否为空*/
  8.         return true;
  9. }
  10. function check_ip($arr_ip,$ip){
  11.     $allip = explode('|',$arr_ip);
  12.     if($allip){
  13.         foreach($allip as $key){
  14.             if(IsNul(strstr($ip,$key))){
  15.                 exit("禁止访问");
  16.             }
  17.         }
  18.     }
  19. }
  20. check_ip($webip,$ip);
复制代码

怎么实现通配符呢?
如果要禁止的IP列表如下怎么实现啊

  1. $webip = "192.168.1.2|219.152.195.208|59.36.178.*|59.36.*.*";//禁止IP列表
复制代码


还有大神吗?
回复

使用道具 举报

落伍网友
落伍网友  发表于 2022-10-24 15:46:13 来自 中国广东深圳
还有日了百度,怎么SO结果都一样,一篇文章N个采集结果,找不到实用的
回复 支持 反对

使用道具 举报

38

主题

589

帖子

429

积分

落伍者(一心一意)

Rank: 1

贡献
74
鲜花
5
注册时间
2013-3-5

落伍手机绑定落伍者

发表于 2022-10-24 17:22:07 | 显示全部楼层 来自 中国江苏扬州
  1. function check_ip($arr_ip, $ip) {
  2.         $allip = explode('|', $arr_ip);
  3.         if ($allip) {
  4.             foreach($allip as $key) {
  5.                 $key = str_replace('.*', '', $key);
  6.                 $key_len = strlen($key);
  7.                 if (substr($ip, 0, $key_len) == $key) {
  8.                     exit("禁止访问");
  9.                 }
  10.             }
  11.         }
  12.     }
复制代码


能实现需求但不考虑性能影响的一种垃圾写法
回复 支持 反对

使用道具 举报

落伍网友
落伍网友  发表于 2022-10-24 17:40:40 来自 亚太地区
Mr·√ 发表于 2022-10-24 17:22
能实现需求但不考虑性能影响的一种垃圾写法

有没有更好的写法吖
回复 支持 反对

使用道具 举报

923

主题

5万

帖子

4万

积分

落伍者(四季发财)

你可以侮辱我但不可以侮辱我头像

Rank: 4

贡献
1596
鲜花
72
注册时间
2004-6-14

QQ绑定落伍手机绑定

发表于 2022-10-24 17:51:01 | 显示全部楼层 来自 中国浙江宁波
肯定去 nginx 上操作啊
回复 支持 反对

使用道具 举报

落伍网友
落伍网友  发表于 2022-10-24 17:56:45 来自 中国广东深圳
娃哈哈 发表于 2022-10-24 17:51
肯定去 nginx 上操作啊

使用场景不方便在nginx上操作,使用在部份页面上,禁访有时限
回复 支持 反对

使用道具 举报

118

主题

2277

帖子

1万

积分

落伍者(四季发财)

好好学习

Rank: 4

贡献
7540
鲜花
25
注册时间
2004-12-19
发表于 2022-10-24 18:31:43 | 显示全部楼层 来自 中国重庆

$webip = "192.168.1.2|219.152.195.208|59.36.178.107";//禁止IP列表
$ip="192.168.1.1";//用户的IP
function check_ip($arr_ip, $ip) {
     $regexp  = '#^('.str_replace(['.','*'],['\.','*']$arr_ip).')$#';
     return preg_match($regexp,$ip);
}
我站在波峰浪尖,吟唱着无人能懂的歌谣。
回复 支持 反对

使用道具 举报

落伍网友
落伍网友  发表于 2022-10-24 18:49:25 来自 中国广东深圳
漆黑风景 发表于 2022-10-24 18:31
$webip = "192.168.1.2|219.152.195.208|59.36.178.107";//禁止IP列表
$ip="192.168.1.1";//用户的IP
f ...

差点卡死,这个是?
回复 支持 反对

使用道具 举报

18

主题

5462

帖子

6347

积分

落伍者(三羊开泰)

Rank: 3Rank: 3

贡献
86
鲜花
26
注册时间
2002-6-13

落伍手机绑定

发表于 2022-10-24 21:07:07 | 显示全部楼层 来自 中国河北承德
  1. [code]
  2. <?php
  3. $ip = '192.168.1.122';
  4. $deny_ips = '127.0.0.2, 192.168.1.*';

  5. function check_ip($src_ip) {
  6.     global $deny_ips;
  7.     $plist = explode(',', $deny_ips);
  8.     foreach($plist as $val) {
  9.         $val = trim($val);
  10.         $val = str_replace('*', '[0-255]+', $val);
  11.         $m = '^'.$val.'$';
  12.         if(preg_match("/$m/", $src_ip)) {
  13.             return true;
  14.         }
  15.     }
  16.     return false;
  17. }
  18. var_dump(check_ip($ip));

复制代码
[/code]
Life is short, You need Python.cn
回复 支持 反对

使用道具 举报

889

主题

1万

帖子

7260

积分

落伍者(三羊开泰)

Rank: 3Rank: 3

贡献
4092
鲜花
106
注册时间
2008-10-2

QQ绑定落伍手机绑定

发表于 2022-10-25 00:53:01 | 显示全部楼层 来自 中国湖南长沙
本帖最后由 凌弘 于 2022-10-25 00:54 编辑

iis和nginx直接用规则不是更快?百度一下很多现成的
真佩服你们这些牛逼的码农,明明ctrl+c能解决非要自己牛逼轰轰的自己写一段。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-11-25 12:32 , Processed in 0.085170 second(s), 31 queries , Gzip On.

返回顶部