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();

  }

}

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