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