Jonlin преди 6 години
родител
ревизия
b55c212745

+ 5 - 0
application/admin/controller/Base.php

@@ -26,6 +26,11 @@ class Base extends Controller
             }
         }
         $settings = db('settings')->where('id',1)->find();
+        if($settings['ip_disjunctor'] == 'on'){
+            $settings['disjunctor'] = '关闭ip限制';
+        }else{
+            $settings['disjunctor'] = '开启ip限制';
+        }
         $material = db('material')->select();
 
         $this->assign([

+ 20 - 0
application/admin/controller/Iplimit.php

@@ -143,6 +143,26 @@ class Iplimit extends Base
         }
     }
 
+    //开启/关闭ip限制
+    public function disjunctor(){
+        if(request()->isAjax()){
+            $disjunctor = input('param.disjunctor');
+            try{
+                if($disjunctor == 'on'){
+                    $msg = '开启';
+                    db('settings')->where('id', 1)->update(['ip_disjunctor'=>$disjunctor]);
+                }else{
+                    $msg = '关闭';
+                    db('settings')->where('id', 1)->update(['ip_disjunctor'=>$disjunctor]);
+                }
+            }catch(\Exception $e){
+                return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
+            }
+
+            return json(['code' => 1, 'data' => '', 'msg' => $msg.'ip限制成功']);
+        }
+    }
+
     // 生成按钮
     private function makeBtn($id)
     {

+ 2 - 2
application/admin/view/iplimit/add.html

@@ -25,8 +25,8 @@
                         <input style="display: none" id="type" name="object" value=""/>
                         <div class="form-group">
                             <label class="col-sm-3 control-label">IP/IP范围:</label>
-                            <div class="input-group col-sm-4">
-                                <input class="form-control" name="ip" required="" aria-required="true" style="width: 400px;height: 38px;resize:none">
+                            <div class="input-group col-sm-4" style="width: 320px;">
+                                <input class="form-control" name="ip" required="" aria-required="true" placeholder="ip范围用“-”隔开,例如'127.0.0.1-127.0.0.11'">
                             </div>
                         </div>
                         <!--<div class="form-group">

+ 2 - 2
application/admin/view/iplimit/edit.html

@@ -24,8 +24,8 @@
                         <input type="hidden" name="id" value="{$info['id']}"/>
                         <div class="form-group">
                             <label class="col-sm-3 control-label">访问ip:</label>
-                            <div class="input-group col-sm-4">
-                                <input class="form-control" name="ip" required="" aria-required="true" value="{$info['ip']}">
+                            <div class="input-group col-sm-4" style="width: 320px;">
+                                <input class="form-control" name="ip" required="" aria-required="true" value="{$info['ip']}" placeholder="ip范围用“-”隔开,例如'127.0.0.1-127.0.0.11'">
                             </div>
                         </div>
                         <div class="form-group">

+ 51 - 4
application/admin/view/iplimit/index.html

@@ -18,10 +18,10 @@
         <input style="display:none;" type="text" value="2" id="type">
         <div style="display: flex;">
             <div class="ibox-title" style="width: 100px; cursor:pointer;" id="current1" onclick="current(2)">
-                <h5>客服</h5>
+                <h5>客服白名单</h5>
             </div>
             <div class="ibox-title" id="current2" style="width: 100px; cursor:pointer; background: #eee" onclick="current(1)">
-                <h5>用户</h5>
+                <h5>用户黑名单</h5>
             </div>
             <div class="ibox-title" style="width: calc(100% - 200px); background: #eee;">
             </div>
@@ -32,12 +32,22 @@
                 </button>
             </a>
 
+
+            <form action="/admin/sensitivec/disjunctor" enctype="multipart/form-data" method="post" role="form" class="form-inline pull-right">
+                <div class="content clearfix m-b">
+                    <div class="form-group" style="margin-left: 20px">
+                        <a href="javascript:disjunctor()" class="btn" style="margin-top:5px;" ><input type="button" id="disjunctor" class="btn {if($settings['ip_disjunctor']=='on')}btn-primary{else}btn-danger{/if} btn-sm" value="{$settings['disjunctor']}"></a>
+                    </div>
+                </div>
+            </form>
+
+
             <!--搜索框开始-->
             <form id='commentForm' role="form" method="post" class="form-inline pull-right">
                 <div class="content clearfix m-b" style="margin-top: 5px;">
                     <div class="form-group">
-                        <label>IP:</label>
-                        <input type="text" class="form-control" id="content" name="content" value="" placeholder="请输入IP">
+                        <label>IP地址:</label>
+                        <input type="text" class="form-control" id="content" name="content" value="" placeholder="请输入IP地址">
                         <input style="display: none">
                     </div>
                     <div class="form-group">
@@ -171,6 +181,43 @@
 
     }
 
+    function disjunctor(){
+        if($('#disjunctor').val() == '开启IP限制'){
+            var disjunctor = 'on';
+        }else{
+            var disjunctor = 'off';
+        }
+        layer.confirm('确认'+$('#disjunctor').val()+'?', {icon: 3, title:'提示'}, function(index){
+            //do something
+            $.getJSON("{:url('iplimit/disjunctor')}", {'disjunctor':disjunctor}, function(res){
+                //console.log(disjunctor);
+                console.log(res);
+                if(1 == res.code){
+                    layer.alert(res.msg, {title: '友情提示', icon: 1, closeBtn: 0}, function(){
+                        initTable();
+                        if($('#disjunctor').val() == '开启IP限制'){
+                            $('#disjunctor').val('关闭IP限制');
+                            $("#disjunctor").addClass("btn-primary");
+                            $("#disjunctor").removeClass("btn-danger");
+                        }else{
+                            $('#disjunctor').val('开启IP限制');
+                            $("#disjunctor").addClass("btn-danger");
+                            $("#disjunctor").removeClass("btn-primary");
+                        }
+
+                    });
+                }else if(111 == res.code){
+                    window.location.reload();
+                }else{
+                    layer.alert(res.msg, {title: '友情提示', icon: 2});
+                }
+            });
+
+            layer.close(index);
+        })
+
+    }
+
 </script>
 </body>
 </html>

+ 11 - 8
application/index/controller/Register.php

@@ -99,14 +99,17 @@ class Register extends Common
     public function autoReg()
     {
         //验证用户IP
-        @$ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
-        $ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"];
-        //将ip地址转换成int型
-        $intip = bindec(decbin(ip2long($ip)));
-        $res = db('iplimit')->where('ip',$ip)->where('object',1)->find();
-        $result = db('iplimit')->where('start_ip','<=',$intip)->where('end_ip','>=',$intip)->where('object',1)->find();
-        if(!empty($res) || !empty($result)){
-            return json(['code' => 0, 'data' => [], 'msg' => 'ip禁止登陆']);
+        $settings = db('settings')->where('id',1)->find();
+        if($settings['ip_disjunctor'] == 'on'){
+            @$ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
+            $ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"];
+            //将ip地址转换成int型
+            $intip = bindec(decbin(ip2long($ip)));
+            $res = db('iplimit')->where('ip',$ip)->where('object',1)->find();
+            $result = db('iplimit')->where('start_ip','<=',$intip)->where('end_ip','>=',$intip)->where('object',1)->find();
+            if(!empty($res) || !empty($result)){
+                return json(['code' => 0, 'data' => [], 'msg' => '访问受限']);
+            }
         }
 
         if (!$this->verifyApiToken()) {

+ 11 - 8
application/service/controller/Login.php

@@ -17,14 +17,17 @@ class Login extends Controller
     public function doLogin()
     {
         //验证用户IP
-        @$ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
-        $ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"];
-        //将ip地址转换成int型
-        $intip = bindec(decbin(ip2long($ip)));
-        $res = db('iplimit')->where('ip',$ip)->where('object',2)->find();
-        $result = db('iplimit')->where('start_ip','<=',$intip)->where('end_ip','>=',$intip)->where('object',2)->find();
-        if(empty($res) && empty($result)){
-            return json(['code' => 0, 'data' => [], 'msg' => '访问受限']);
+        $settings = db('settings')->where('id',1)->find();
+        if($settings['ip_disjunctor'] == 'on'){
+            @$ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
+            $ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"];
+            //将ip地址转换成int型
+            $intip = bindec(decbin(ip2long($ip)));
+            $res = db('iplimit')->where('ip',$ip)->where('object',2)->find();
+            $result = db('iplimit')->where('start_ip','<=',$intip)->where('end_ip','>=',$intip)->where('object',2)->find();
+            if(empty($res) && empty($result)){
+                return json(['code' => 0, 'data' => [], 'msg' => '访问受限']);
+            }
         }
 
         $userAccount = input('post.username');