標籤:
已經自學了三個月的php了,感覺好像什麼都瞭解了一點,又還是什麼都不會。歸根結底還是不怎麼總結和做記錄的原因吧 每天都會遇到問題,有時候折騰個半天一天的就解決了,時間一久又會忘記,碰到相同的問題又是懵比。
相比起學習新的知識,對於之前學過的用過的東西總結我想更為的重要一些吧。
最近利用thinkphp做了一個簡單的後台內容管理程式,可以對資料庫進行資料的增刪改查,可以將midi檔案上傳,將下載連結儲存到資料庫中。將資料庫中表資料讀取產生xml檔案 以供 app開發人員調用。
下面是我在做後台登陸驗證碼的重新整理校正時遇到的一個比較常見的問題。
1、驗證碼的產生
2、前台點擊即使重新整理
3、登入提交時 ajax+jquery會進行二次驗證,此時會一直提示驗證碼錯誤的問題。
貼出代碼。
1 //顯示驗證碼 2 public function verify(){ 3 $config = array( 4 ‘imageW‘=>100, 5 ‘imageH‘=>26, 6 ‘fontSize‘=>14, 7 ‘length‘=>4, 8 ‘useNoise‘=>false, 9 ‘codeSet‘=>‘0123456789‘,10 );11 $Verify = new \Think\Verify($config);12 $Verify->entry();13 }
<th>驗證碼:</th> <td> <input type="code" class="len250" name="code"/> <img src="{:U(‘verify‘)}" alt="驗證碼" id="code" onclick="this.src = this.src + ‘?‘"/> </td>
1 //校正驗證碼 寫在Common/Common/function.php 裡邊,在控制器校正驗證碼時調用2 function check_verify($code,$id = ""){3 $verify = new \Think\Verify();4 return $verify->check($code,$id);5 }
1 //非同步校正驗證碼 2 public function checkcode(){3 $code = I(‘post.code‘);4 if(check_verify($code)===false){5 echo 0;6 }else{7 echo 1;8 }9 }
1 //jquery 驗證驗證碼 2 $("input[name=‘code‘]").blur(function(){ 3 var code = $("input[name=‘code‘]"); 4 if(code.val().trim()==‘‘){ 5 code.parent().find("span").remove().end().append("<span class=‘error‘>驗證碼不可為空</span>"); 6 return ; 7 } 8 $.post(CONTROL+"/checkcode",{code:code.val().trim()},function(stat){ 9 if(stat==1){10 validate.code=0;11 code.parent().find("span").remove();12 return;13 }else{14 code.parent().find("span").remove().end().append("<span class=‘error‘>驗證碼錯誤</span>");15 return;16 }17 18 })19 })
1 <script type="text/javascript" src="__PUBLIC__/js/jquery-1.7.2.min.js"></script>2 <script type="text/javascript" src="__PUBLIC__/js/login.js"></script>3 <script>4 var CONTROL = "__APP__/home/Login";5 </script>
在寫完以上代碼的時候,驗證碼就可以顯示並且即使驗證了。
但是這個時候會出現前文提到的第三個問題,在點擊提交submit的時候,會進行二次驗證,此時會提示驗證碼錯誤。
其實原因還是出在Thinkphp的Verify.class.php上:
1 // 中文驗證碼字串 2 ‘useImgBg‘ => false, // 使用背景圖片 3 ‘fontSize‘ => 25, // 驗證碼字型大小(px) 4 ‘useCurve‘ => true, // 是否畫混淆曲線 5 ‘useNoise‘ => true, // 是否添加雜點 6 ‘imageH‘ => 0, // 驗證碼圖片高度 7 ‘imageW‘ => 0, // 驗證碼圖片寬度 8 ‘length‘ => 5, // 驗證碼位元 9 ‘fontttf‘ => ‘‘, // 驗證碼字型,不設定隨機擷取10 ‘bg‘ => array(243, 251, 254), // 背景顏色11 ‘reset‘ => false, // 驗證成功後是否重設12 );
最後一個reset 預設是true,只需要改為false 就不會出現這個問題了。
thinkphp3.2 驗證碼的產生和校正,以及遇到的一些問題