php實現(xiàn)ip白名單黑名單功能_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:php操作(刪除,提取,增加)zip文件方法詳解
      本文給大家分享的是php操作zip文件的方法示例,包括了從zip壓縮文件中提取文件、從一個zip壓縮文件中刪除文件、添加一個文件到zip壓縮文件中,推薦給大家,有需要的小伙伴參考下。 php讀取zip文件(刪除文件,提取文件,增加文件)實例 從zip壓縮文件中提取文件 代碼如下:

       本文給大家分享了2個php用于實現(xiàn)黑白名單的實用函數(shù),分別是安全IP檢測函數(shù)和獲取客戶端IP函數(shù),注釋里解釋的非常清楚,這里我就不多廢話了。

         

      這個是一個檢測ip是否非法的php函數(shù),適應(yīng)于白名單,黑名單功能開發(fā),主要場景應(yīng)用于:api來源限制,訪問限制等.

       

      代碼如下:
      /**
      * 安全IP檢測,支持IP段檢測
      * @param string $ip 要檢測的IP
      * @param string|array $ips 白名單IP或者黑名單IP
      * @return boolean true 在白名單或者黑名單中,否則不在
      */
      function is_safe_ip($ip="",$ips=""){
      if(!$ip) $ip = get_client_ip(); //獲取客戶端IP
      if($ips){
      if(is_string($ips)){ //ip用"," 例如白名單IP:192.168.1.13,123.23.23.44,193.134.*.*
      $ips = explode(",", $ips);
      }
      }else{ //讀取后臺配置 白名單IP
      $obj = new Setting();
      $ips = explode(",", $obj->getConfig("whiteip"));
      }
      if(in_array($ip, $ips)){
      return true;
      }
      $ipregexp = implode('|', str_replace( array('*','.'), array('\d+','\.') ,$ips));
      $rs = preg_match("/^(".$ipregexp.")$/", $ip);
      if($rs) return true;
      return ;
      }

       

      獲取ip地址,這里引用thinkphp內(nèi)置函數(shù)

       

      代碼如下:
      //應(yīng)網(wǎng)友要求,貼出 get_client_ip() 函數(shù)
      /**
      * 獲取客戶端IP地址
      * @param integer $type 返回類型 0 返回IP地址 1 返回IPV4地址數(shù)字
      * @param boolean $adv 是否進行高級模式獲取(有可能被偽裝)
      * @return mixed
      */
      function get_client_ip($type = 0,$adv=false) {
      $type = $type ? 1 : 0;
      static $ip = NULL;
      if ($ip !== NULL) return $ip[$type];
      if($adv){
      if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
      $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
      $pos = array_search('unknown',$arr);
      if(false !== $pos) unset($arr[$pos]);
      $ip = trim($arr[0]);
      }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
      $ip = $_SERVER['HTTP_CLIENT_IP'];
      }elseif (isset($_SERVER['REMOTE_ADDR'])) {
      $ip = $_SERVER['REMOTE_ADDR'];
      }
      }elseif (isset($_SERVER['REMOTE_ADDR'])) {
      $ip = $_SERVER['REMOTE_ADDR'];
      }
      // IP地址合法驗證
      $long = sprintf("%u",ip2long($ip));
      $ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
      return $ip[$type];
      }

       

      以上就是本文的全部內(nèi)容了,希望對大家理解php檢測IP有所幫助。

      分享:PHP往XML中添加節(jié)點的方法
      這篇文章主要介紹了PHP往XML中添加節(jié)點的方法,涉及php操作XML文件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下 本文實例講述了PHP往XML中添加節(jié)點的方法。分享給大家供大家參考。具體方法如下: 1. contacts.xml代碼 代碼如下:contact id=43956 personal name fi

      來源:模板無憂//所屬分類:PHP教程/更新時間:2015-03-13
      相關(guān)PHP教程