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();
    }

 

posted @ 2016-07-07 21:05  智昕  阅读(2298)  评论(0编辑  收藏  举报