亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    PHP限制訪問ip白名單的方法詳解

    PHP限制訪問ip白名單的方法詳解

    PHP如何限制訪問ip白名單?

    一 、上代碼

    config.php

        //ip白名單配置         'ipWlist'=>[             'ifFilter'=>true,   //是否開啟白名單功能             'wlist'=>[                 '10.0.0.19',             ],             'warea1'=>'10.8.0.0/16',     //白名單網(wǎng)段1             'warea2'=>'10.12.0.0/16',     //白名單網(wǎng)段1         ],

    commonfunc.php

    private function checkIp(){         $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];         $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];         $ipC=config('appconf.ipWlist');         if(!$ipC['ifFilter']){             return true;         }         if(in_array($user_IP, $ipC['wlist'])){             return true;         }         if( ! $this->ip_in_network($user_IP, $ipC['warea1'])){             if( ! $this->ip_in_network($user_IP, $ipC['warea2'])){                 return false;             }         }         return true;     }     private function  ip_in_network($ip, $network)     {         $ip = (double) (sprintf("%u", ip2long($ip)));         $s = explode('/', $network);         $network_start = (double) (sprintf("%u", ip2long($s[0])));         $network_len = pow(2, 32 - $s[1]);         $network_end = $network_start + $network_len - 1;         if ($ip >= $network_start && $ip <= $network_end)         {             return true;         }         return false;     }

    二 、說明

    2.1 獲取ip的方式

    ● $_SERVER["HTTP_VIA"] 有代理服務(wù)器的時候,表示代理服務(wù)器IP;

    ● $_SERVER["HTTP_X_FORWARDED_FOR"] 透過代理服務(wù)器取得客戶端的真實 IP 地址;

    ● $_SERVER["REMOTE_ADDR"] 正在瀏覽當(dāng)前頁面用戶的 IP 地址

    一般來說,開發(fā)者對于內(nèi)部的服務(wù)器架構(gòu)比較了解,簡單粗暴的用REMOTE_ADDR即可,因為REMOTE_ADDR不可偽造,更加安全,另外兩個字段就沒那么靠譜.

    2.2 有的童鞋不是用數(shù)組的config而是用define

    可以用json_encode,序列化,eval()等方式來解決,如下

    define("IPFILTER",1);   define('IPWLISTJSON',json_encode(['127.0.0.1',])); // 業(yè)務(wù)中 $wlist = json_decode(IPWLISTJSON,1); define('IPWLIST',"return ['127.0.0.1',];"); // 業(yè)務(wù)中 $wlist=eval(IPWLIST) define('IPWLIST',serialize(['127.0.0.1',])); // 業(yè)務(wù)中 $wlist=unserialize(IPWLIST);

    還可以用string特殊分隔符的explode形式等,這里就不一一舉例了。

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號