THINKPHP中使用JS刷新驗證碼,並驗證進行異步提交


 

在使用THINKPHP的過程中  我們使用驗證碼時,點擊驗證碼,觸發 fleshVerify方法刷新驗證碼,並通過Math.floor(Math.random()*100))生成100內的隨機數

 <img id="imgVerify" style="cursor:pointer;" src="{:U('Admin/vertify')}" onclick="fleshVerify();"/>

function fleshVerify(){
//重載驗證碼
$('#imgVerify').attr('src','/index.php?m=Admin&c=Admin&a=vertify&r='+Math.floor(Math.random()*100));
}

 

點擊登錄事件 checkLogin(),觸發JS,先進行驗證用戶名密碼及驗證碼是否為空

<button type="button" class="btn btn-primary btn-block btn-flat admin_login" onclick="checkLogin()">立即登陸 </button> 

      function checkLogin(){
          var username = $('#username').val();
          var password = $('#password').val();
          var vertify = $('input[name="vertify"]').val();
          if( username == '' || password ==''){
              layer.alert('用戶名或密碼不能為空', {icon: 2}); //alert('用戶名或密碼不能為空');
            fleshVerify();  //如果錯誤 重新刷新驗證碼
              return;
          }
          if(vertify ==''){
                 layer.alert('驗證碼不能為空', {icon: 2});
              fleshVerify();
              return;
          }
          if(vertify.length !=4){
                 layer.alert('驗證碼錯誤', {icon: 2});
                 fleshVerify();  //如果錯誤 重新刷新驗證碼
              return;
          }

          $.ajax({
              url:'/index.php?m=Admin&c=Admin&a=login&t='+Math.random(),
            type:'post',
            dataType:'json',
            data:{username:username,password:password,vertify:vertify},
            success:function(res){
                if(res.status==1){
                     top.location.href = res.url;
                }else{
                    layer.alert(res.msg, {icon: 2});
          //如果返回的驗證信息錯誤重新刷新驗證碼
          fleshVerify();
                }
            },
            error : function(XMLHttpRequest, textStatus, errorThrown) {
                layer.alert('網絡失敗,請刷新頁面后重試', {icon: 2});
            }
          })
      }

 

PHP驗證頁

    public function login(){
        if(session('?admin_id') && session('admin_id')>0){
             $this->error("您已登錄",U('Admin/Index/index'));
        }

        if(IS_POST){
            //使用驗證碼方法,驗證驗證碼是否正確
            $verify = new Verify();
            if (!$verify->check(I('post.vertify'), "Admin/Login")) {
                exit(json_encode(array('status'=>0,'msg'=>'驗證碼錯誤')));
            }
            //驗證成功進行身份驗證
            $condition['user_name'] = I('post.username');
            $condition['password'] = I('post.password');
            if(!empty($condition['user_name']) && !empty($condition['password'])){
                $condition['password'] = encrypt($condition['password']);
                   $admin_info = M('admin')->join('__ADMIN_ROLE__ ON __ADMIN__.role_id=__ADMIN_ROLE__.role_id')->where($condition)->find();
                if(is_array($admin_info)){
                    session('admin_id',$admin_info['admin_id']);
                    session('act_list',$admin_info['act_list']);
                    //記錄登錄日志
                    $last_login_time = M('admin_log')->where("admin_id = ".$admin_info['admin_id']." and log_info = '后台登錄'")->order('log_id desc')->limit(1)->getField('log_time');
                    session('last_login_time',$last_login_time);
                    adminLog('后台登錄',__ACTION__);
                    $url = session('from_url') ? session('from_url') : U('Admin/Index/index');
                    exit(json_encode(array('status'=>1,'url'=>$url)));
                }else{
                    exit(json_encode(array('status'=>0,'msg'=>'賬號密碼不正確')));
                }
            }else{
                exit(json_encode(array('status'=>0,'msg'=>'請填寫賬號密碼')));
            }
        }
        $this->display();
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM