<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                >前端html使用了vue.js ~~~html <form id="login"> <fieldset> <label data-tag="username" class="block clearfix"> <span class="block input-icon input-icon-right"> <input type="text" v-model="model.username" class="form-control" placeholder="用戶名" /> <i class="icon-user"></i> </span> </label> <label data-tag="password" class="block clearfix"> <span class="block input-icon input-icon-right"> <input type="password" v-model="model.password" class="form-control" placeholder="密碼" /> <i class="icon-lock"></i> </span> </label> <label data-tag="verify" class="inline clearfix"> <span class="input-icon input-icon-right"> <input type="text" v-model="model.verify" class="form-control" placeholder="驗證碼" /> <i class="icon-key"></i> </span> <img src="{:U('Login/verify')}" onClick="this.src=this.src+'?'+Math.random()"> </label> <div class="space"></div> <div class="clearfix"> <label class="inline"> <input class="ace" v-model="model.remember" type="checkbox" name="remember"/> <span class="lbl">記住賬號密碼</span> </label> <button v-on:click="doSubmit()" type="button" class="width-35 pull-right btn btn-sm btn-primary"> <i class="icon-key"></i> 登陸 </button> </div> <div class="space-4"></div> </fieldset> </form> ~~~ >js代碼部分 ~~~JavaScript <script type="text/javascript"> util.get("{:U('login/member')}",function (data) { var model = (data==false)?{}:data; var vm = new Vue({ el: "#login", data: { model:model, }, methods: { doSubmit: function() { console.log(this.model.remember); $.ajax({ type:'post', data:this.model, url:"{:U('login/login')}", cache: false, dataType:'json', success:function(data){ if(data.status==true){ location.href="{:U('Index/index')}"; }else { $('[data-tag]').siblings().removeClass('has-error'); $('[data-tag="'+data.tag+'"]').addClass('has-error'); util.alert('danger',data.message); } } }); } } }) }) </script> ~~~ >php 后臺代碼 ~~~php /** * 登錄操作 */ public function login(){ $admin = new AdminLogic(); $result = $admin->doLogin(); //讀取用戶權限 Rbac::saveAccessList(); $this->ajaxReturn($result); } ~~~ >login登錄模型 ~~~php <?php /** * Created by dh2y * email: xiaodai54_long@163.com * Date: 2017/6/21 9:10 * describ: 登錄服務模型 */ namespace Admin\Logic; use Common\Model\BaseModel; use Think\Crypt; use Think\Model; class AdminLogic extends BaseModel { protected $tableName = 'admin'; protected $labels = ['username'=>'','password'=>'','verify'=>'','remember'=>false]; protected $member; //自動驗證 protected $_validate = array( ['username','require',['tag'=>'username','error'=>'用戶名必須!']], //默認情況下用正則進行驗證 ['verify','require',['tag'=>'verify','error'=>'驗證碼不能為空!'],], ['verify','checkVerify',['tag'=>'verify','error'=>'驗證碼錯誤!'],2,'callback',3], ['password','require',['tag'=>'password','error'=>'密碼不能為空!'],], ['password','checkPsw',['tag'=>'password','error'=>'請輸入6~16位有效字符'],2,'callback',3], ); //檢驗用戶 public function checkMember(){ if( $this->create()){ $map['username'] = $this->labels['username']; $map['status'] = 1; $this->member = $this->where($map)->find(); if ( $this->member){ return ['status' => true, 'data' => $this->member]; } return ['status'=>false,'tag'=>'username','message'=>'用戶不存在或被禁用']; } $error = $this->getError(); return ['status' => false,'tag'=>$error['tag'], 'message' => $error['error']]; } //檢查密碼是否正確 public function checkPass($password){ if(md5($password) != $this->member['password']){ return ['status'=>false,'tag'=>'password','message'=>'密碼錯誤']; } return ['status'=>true,'message'=>'恭喜!密碼正確']; } //驗證登錄 public function checkLogin(){ } //登錄操作 public function doLogin(){ $result = $this->checkMember(); if ($result['status']==false){ return $result; } $result = $this->checkPass($this->labels['password']); if($result['status']==true){ session(C("USER_AUTH_KEY"), $this->member['id']);//(RBAC) session("username", $this->member['username']); //如果為超級管理員,則無需驗證(RBAC) if($this->member['username'] == C('RBAC_SUPERADMIN')) { session(C('ADMIN_AUTH_KEY'), true); } //登錄日志更新 $this->member['login_time'] = time(); $this->member['login_ip'] = get_client_ip(0,true); $this->save($this->member); //如果記住賬號密碼-vue.js復選框傳的是true和false字符串 if($this->labels['remember']=='true'){ $member['username'] = $this->labels['username']; $member['password'] = $this->labels['password']; $member['remember'] = $this->labels['remember']; $remember = Crypt::encrypt(serialize($member),C('CRYPT_KEY')); cookie('remember', $remember);//記住我 }else{ cookie('remember', null); } } return $result; } //得到記住用戶名和密碼 public function getRemember(){ if(!cookie('remember')){ return false; } $remember = Crypt::decrypt(cookie('remember'),C('CRYPT_KEY')); return unserialize($remember); } //驗證密碼規則 public function checkPsw($password){ $pattern = '/^[\S]{5,16}$/'; if(!preg_match($pattern,$password)) return false; else return true; } //登錄驗證碼操作 public function checkVerify() { $verify = new \Think\Verify(); return $verify->check($this->labels['verify']); } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看