- 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黑白名单过滤就完成了,希望可以为大家带来帮助。
您可能感兴趣的文章:
PHP安全过滤代码(360提供 安全系数高)
PHP过滤post,get敏感数据的实例代码
php 过滤非法与特殊字符串的方法
php 防注入的一段代码(过滤参数)
很好用的php防止sql注入漏洞过滤函数的代码
php防止sql注入正则过滤一例
一段php过滤危险html的代码
|