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