成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

php+redis實(shí)現(xiàn)ip白名單并提供可配置ip頁(yè)面

Profeel / 763人閱讀

摘要:白名單或者黑名單,目的是為了達(dá)到一種受限訪問,希望在名單內(nèi)用戶可以訪問,就把名單叫白名單希望在名單內(nèi)用戶拒絕訪問,就是黑名單。但我覺的它不夠靈活,我選擇在應(yīng)用程序中來實(shí)現(xiàn)名單機(jī)制。

ip白名單或者黑名單,目的是為了達(dá)到一種受限訪問,希望在名單內(nèi)用戶可以訪問,就把名單叫白名單;希望在名單內(nèi)用戶拒絕訪問,就是黑名單。無論我們希望使用哪種名單方式,實(shí)現(xiàn)方式都一樣。

在nginx下我們通常會(huì)考慮用nginx+lua的方式來實(shí)現(xiàn),它很優(yōu)雅速度快。確實(shí),這是一種方案,我也做過這種方案的研究。但我覺的它不夠靈活,我選擇在應(yīng)用程序中來實(shí)現(xiàn)名單機(jī)制。

主要思路:用戶->獲取ip->redis取出名單庫(kù)->比對(duì)->處理

代碼Github庫(kù):https://github.com/jacoobwang...

控制訪問

connect("127.0.0.1", 6379);
            $ip_white_list = $inst->sMembers("ip_blacklist");
            if(!in_array($ip, $ip_white_list)) {
                echo "

HTTP/1.1 403 Forbidden

"; header("HTTP/1.1 403 Forbidden"); } } } /** * 獲取用戶的IP * * @return void */ function getRemoteIp(){ if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; }elseif(isset($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; }elseif(getenv("HTTP_X_FORWARDED_FOR")){ $ip = getenv("HTTP_X_FORWARED_FOR"); }elseif(getenv("HTTP_CLIENT_IP")){ $ip = getenv("HTTP_CLIENT_IP"); }elseif($_SERVER["REMOTE_ADDR"]){ $ip = $_SERVER["REMOTE_ADDR"]; } else{ $ip = null; } return $ip; }

動(dòng)態(tài)配置頁(yè)面

connect("127.0.0.1", 6379);
$ip = $inst->sMembers("ip_blacklist");
$li = "";
foreach($ip as $val) {
    $li .= "
  • ".$val." delete
  • "; } ?>

    配置頁(yè)面接口

    connect("127.0.0.1", 6379);
    $type = isset($_POST["type"]) ? $_POST["type"] : ""; 
    $ip = isset($_POST["ip"]) ? $_POST["ip"] : "";
    if(!empty($ip)){
        $isExist = $inst->sIsMember("ip_blacklist",$ip);
        
        if($isExist) {
            if($type == "delete"){
                // delete
                $rs = $inst->sRemove("ip_blacklist",$ip);
                echo $rs;
            }
        } else {
            if($type == "add"){
                if(preg_match("/^d{2,3}.d{2,3}.d{2,3}.d{1,3}$/",$ip)) {
                    $rs = $inst->sAdd("ip_blacklist",$ip);
                    echo $rs;
                } else {
                    echo 2;
                }
            }
        }
    } 

    文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22843.html

    相關(guān)文章

    • php+redis實(shí)現(xiàn)ip名單思路篇

      摘要:實(shí)現(xiàn)思路畫了個(gè)簡(jiǎn)易流程圖,方便大家理解。如果存在就繼續(xù)向下流程,如果不存在則向右流程,返回,這樣就拒絕了不在庫(kù)中用戶的訪問,達(dá)到了白名單效果。實(shí)現(xiàn)代碼參考結(jié)語(yǔ)如果有更多白名單問題或者白名單問題都可以留言與我聯(lián)系 今天發(fā)的是一篇續(xù)篇,主要講講如何實(shí)現(xiàn)?想閱讀第一篇的,點(diǎn)擊傳送門 首先完善了下管理配置后臺(tái),看下dashbord長(zhǎng)什么樣,先睹為快。 showImg(https://segme...

      techstay 評(píng)論0 收藏0
    • 面向?qū)ο蟮姆植际脚老x框架XXL-CRAWLER

      摘要:面向?qū)ο蟮姆植际脚老x框架一簡(jiǎn)介概述是一個(gè)面向?qū)ο蟮姆植际脚老x框架。分布式集群集群方式維護(hù)爬蟲爬蟲運(yùn)行數(shù)據(jù),可通過或定制實(shí)現(xiàn)。 《面向?qū)ο蟮姆植际脚老x框架XXL-CRAWLER》 showImg(https://segmentfault.com/img/remote/1460000011842697);showImg(https://segmentfault.com/img/remote...

      anquan 評(píng)論0 收藏0

    發(fā)表評(píng)論

    0條評(píng)論

    最新活動(dòng)
    閱讀需要支付1元查看
    <