PHP实现限制IP访问的方法

//获取客户端ip

if (getenv("HTTP_CLIENT_IP"))

  $ip = getenv("HTTP_CLIENT_IP");

else if(getenv("HTTP_X_FORWARDED_FOR"))

  $ip = getenv("HTTP_X_FORWARDED_FOR");

else if(getenv("REMOTE_ADDR"))

  $ip = getenv("REMOTE_ADDR");

else $ip = "Unknow";

$ALLOWED_IP=array('10.144.39.132');

//允许访问的ip

$check_ip_arr= explode('.',$ip);

//ip参数拆分成数组

if(!in_array($ip,$ALLOWED_IP)) {

  $bl=false;

  foreach ($ALLOWED_IP as $val){

    if(strpos($val,'*')!==false){

      //发现有*号替代符

      $arr=array();

      $arr=explode('.', $val);

      $bl=true;

      //用于记录循环检测中是否有匹配成功的

      for ($i=0;$i<4;$i++){

        if($arr[$i]!='*'){

          //不等于* 就要进来检测,如果为*符号替代符就不检查

          if($arr[$i]!=$check_ip_arr[$i]){

            $bl=false;

            break;

            //终止检查本个ip 继续检查下一个ip

          }

        }

      }

      //end for

      if($bl){

        //如果是true则终止匹配

        break;

      }

    }

  }

  //end foreach

  if(!$bl){

    $return=array(

       'status'=>2,

       'msg'=>'该IP无权限访问',

       'data'=>$ip

       );

    echo json_encode($return);

    exit();

  }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章