PHP實現白名單或黑名單


/**  * 安全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地址  * @param integer $type 返回類型 0 返回IP地址 1 返回IPV4地址數字  * @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]; }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM