這個是一個檢測ip是否非法的php函數,適應于白名單,黑名單功能開發,主要場景應用于: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內置函數
代碼如下:
//應網友要求,貼出 get_client_ip() 函數 * 獲取客戶端IP地址 * @param integer $type 返回類型 0 返回IP地址 1 返回IPV4地址數字 * @param boolean $adv 是否進行高級模式獲取(有可能被偽裝) * @return mixedfunction get_client_ip($type = 0,$adv=false) { $type = $type ? 1 : 0; html' target='_blank'>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];}
總結:以上就是本篇文的全部內容,希望能對大家的學習有所幫助。
相關推薦:
PHP中流的基本知識
PHP輸出緩沖的簡介及作用
php基于socket實現UDP通信的方法
以上就是php用于實現黑白名單的實用函數的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答