問題:
Thinkphp 3.2.2 驗證碼check_verify方法,只能驗證一次。
function check_verify($code, $id = ''){
$verify = \Think\Verify();
return $verify->check($code, $id);
}
一般通常我們做的網站,驗證碼都會驗證兩次,一次是前台Ajax的提交驗證,然后用戶提交到后台再驗證一次。但是用上面的check_verify第一次Ajax驗證正確,但是提交到后台php再次調用函數check_verify,驗證失敗false。
js端驗證code
function checkCode(oo){ var patt = /^\w{4}$/; if(!patt.test(oo.value)){ $('#errVer').html('驗證碼輸入不對'); return false; }else{ //利用Ajax實現:驗證碼是否正確 var url = '/index.php/Home/User/checkVerify/verifyCode/'+oo.value; /*alert(url); */ $.get(url,function(res){ if(res==true){ $('#errVer').html(''); }else{ $('#errVer').html('驗證碼錯誤,請刷新驗證碼'); return true; } }); }
return false;
}
服務器端
<?php
namespace Home\Controller;
use Think\Controller;
use Think\Verify;
//生成驗證碼方法
public function verify(){
$Verify = new Verify();
$Verify->reset = true;
$Verify->length = 4;
$Verify->useNoise = false;
$Verify->entry();
}
}
//驗證碼是否正確
public function checkVerify(){
$Verify = new Verify();
$Verify->reset = false;
if($Verify->check(I('get.verifyCode'))){
echo 1;
}else{
echo 0;
}
}
