thinkphp3.2 驗證碼的產生和校正,以及遇到的一些問題

來源:互聯網
上載者:User

標籤:

      已經自學了三個月的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 驗證碼的產生和校正,以及遇到的一些問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.