当前位置:首页 > PHP教程 > php应用 > 列表

PHP 只允许指定IP访问(允许*号通配符过滤IP)

发布:smiling 来源: PHP粉丝网  添加日期:2021-03-19 19:29:25 浏览: 评论:0 

今天有朋友问我如何只允许指定IP访问,默认禁止其它ip访问,脚本之家小编以前分享的是如何限制指定ip访问,这里正好分享下,需要的朋友可以参考下

核心函数代码如下:

  1. /** 
  2.  * 检测访问的ip是否为规定的允许的ip 
  3.  * Enter description here ... 
  4.  */ 
  5. function check_ip(){ 
  6.     $ALLOWED_IP=array('192.168.2.*','127.0.0.1','192.168.2.49'); 
  7.     $IP=getIP(); 
  8.     $check_ip_arrexplode('.',$IP);//要检测的ip拆分成数组 
  9.     #限制IP 
  10.     if(!in_array($IP,$ALLOWED_IP)) { 
  11.         foreach ($ALLOWED_IP as $val){ 
  12.           if(strpos($val,'*')!==false){//发现有*号替代符 
  13.              $arr=array();// 
  14.              $arr=explode('.'$val); 
  15.              $bl=true;//用于记录循环检测中是否有匹配成功的 
  16.              for($i=0;$i<4;$i++){ 
  17.                 if($arr[$i]!='*'){//不等于* 就要进来检测,如果为*符号替代符就不检查 
  18.                     if($arr[$i]!=$check_ip_arr[$i]){ 
  19.                         $bl=false; 
  20.                         break;//终止检查本个ip 继续检查下一个ip 
  21.                     } 
  22.                 } 
  23.              }//end for  
  24.              if($bl){//如果是true则找到有一个匹配成功的就返回 
  25.                 return
  26.                 die
  27.              } 
  28.           } 
  29.         }//end foreach 
  30.         header('HTTP/1.1 403 Forbidden'); 
  31.         echo "Access forbidden"
  32.         die
  33.     } 
  34. * 获得访问的IP  
  35. * Enter description here ...  
  36. */  
  37. function getIP() {  
  38.   return isset($_SERVER["HTTP_X_FORWARDED_FOR"])?$_SERVER["HTTP_X_FORWARDED_FOR"]  
  39.   :(isset($_SERVER["HTTP_CLIENT_IP"])?$_SERVER["HTTP_CLIENT_IP"]  
  40.   :$_SERVER["REMOTE_ADDR"]);  

在需要检测的地方 加上调用 check_ip(); 即可;  本函数提供只允许指定的IP访问文件,并提供IP中*号通配符 匹配多IP 

Tags: PHP通配符过滤IP

分享到: