java过滤器ip白名单_php实现过滤IP黑白名单的方法

需求:对一个php文件执行进行IP过滤,不方便直接配置服务器,于是需要直接在php文件开头进行IP的过滤。

IP过滤规则,可以有如下形式:

1.完整的IP地址 如:192.168.0.1

2.某一段IP 如:192.168.0.* 。

运维人员可以自定义IP黑白名单,由多个IP过滤规则组成,保存在数组中。通过编写代码,实现IP黑白名单功能。

首先实现一个函数,功能是判断ip是否符合某个ip过滤规则:

复制代码 代码如下:

function ip_test($ip,$iprule){

$ipruleregexp=str_replace('.*','ph',$iprule);

$ipruleregexp=preg_quote($ipruleregexp,'/');

$ipruleregexp=str_replace('ph','\.[0-9]{1,3}',$ipruleregexp);

if(preg_match('/^'.$ipruleregexp.'$/',$ip)) return true;

else return false;

}

实现了ip_test这个核心函数后,下面的过程就简单多了,无非就是简单的遍历名单中的每条规则,判断当前连接的IP是否符合规则,并进行对应的步骤。

白名单,当IP至少满足一条规则时继续执行操作:

复制代码 代码如下:

$curr_ip=$_SERVER['REMOTE_ADDR'];

$white_list=array(...); //白名单规则

$test_success=false;

foreach($white_list as $iprule){

if(ip_test($curr_ip,$iprule)){

$test_success=true;

break;

}

}

if(!$test_success) exit('IP not in white list');

黑名单,当IP不满足所有规则时继续执行操作:

复制代码 代码如下:

$curr_ip=$_SERVER['REMOTE_ADDR'];

$black_list=array(...); //黑名单规则

foreach($black_list as $iprule){

if(ip_test($curr_ip,$iprule)){

exit('IP in black list');

}

}

至此,一个简单的PHP实现的IP黑白名单过滤就完成了,希望可以为大家带来帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值