国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

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

2024-05-04 23:32:15
字體:
來源:轉載
供稿:網(wǎng)友
本文給大家分享了2個php用于實現(xiàn)黑白名單的實用函數(shù),分別是安全IP檢測函數(shù)和獲取客戶端IP函數(shù),注釋里解釋的非常清楚,這里我就不多廢話了。
 

這個是一個檢測ip是否非法的php函數(shù),適應于白名單,黑名單功能開發(fā),主要場景應用于: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ù)

 

復制代碼代碼如下:

//應網(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有所幫助。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 库车县| 达州市| 叶城县| 浪卡子县| 唐海县| 堆龙德庆县| 萨迦县| 伊金霍洛旗| 田阳县| 贵州省| 屏南县| 沙坪坝区| 柳州市| 高要市| 常熟市| 手游| 江西省| 琼中| 清远市| 个旧市| 和林格尔县| 衡山县| 庄浪县| 江阴市| 巴彦淖尔市| 凤台县| 岐山县| 四川省| 来凤县| 南昌市| 南宫市| 翁牛特旗| 喀喇| 吴川市| 永靖县| 象山县| 呼和浩特市| 芜湖市| 绍兴市| 哈尔滨市| 贵溪市|