Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  php  >  正文 php实现过滤IP黑白名单的方法

php实现过滤IP黑白名单的方法

发布时间:2015-05-15   编辑:www.jquerycn.cn
需求:对一个php文件执行进行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黑白名单过滤就完成了,希望可以为大家带来帮助。

您可能感兴趣的文章:
php实现过滤IP黑白名单的方法
php 防注入的一段代码(过滤参数)
php 禁止单个IP地址或IP段访问的实现代码
php判断ip黑名单程序代码
防止sql注入与跨站攻击的代码分享(初级实用型)
PHP安全过滤代码(360提供 安全系数高)
php过滤html中网站链接 php实现域名白名单功能
PHP过滤post,get敏感数据的实例代码
php限制IP和IP段的代码(白名单)
photoshop制作有点蓝色的白天变黑夜效果教程

[关闭]