《PHP實戰(zhàn):詳解ThinkPHP3.2.3驗證碼顯示、刷新、校驗》要點:
本文介紹了PHP實戰(zhàn):詳解ThinkPHP3.2.3驗證碼顯示、刷新、校驗,希望對您有用。如果有疑問,可以聯(lián)系我們。
相關(guān)主題:thinkphp教程
ThinkPHP3.2.3驗證碼顯示、刷新、校驗 ,具體如下:PHP實戰(zhàn)
顯示驗證碼PHP實戰(zhàn)
首先在Home/Controller下創(chuàng)建一個公共控制器PublicController
PHP實戰(zhàn)
<?php namespace Home\Controller; use Think\Controller; use Think\Verify; class PublicController extends Controller { /* 生成驗證碼 */ public function verify() { $config = [ 'fontSize' => 19, // 驗證碼字體大小 'length' => 4, // 驗證碼位數(shù) 'imageH' => 34 ]; $Verify = new Verify($config); $Verify->entry(); } /* 驗證碼校驗 */ public function check_verify($code, $id = '') { $verify = new \Think\Verify(); $res = $verify->check($code, $id); $this->ajaxReturn($res, 'json'); } }
verify函數(shù)用于生成驗證碼,config是用來配置顯示驗證碼的屬性.該屬性有哪些可配置項,可以查看Thinkphp/Library/Think/Verify.class.php文件,此處不再贅述.PHP實戰(zhàn)
check_verify函數(shù)用于校驗驗證碼的正確性.模板post用戶填寫的驗證碼到該函數(shù),返回$res==true驗證通過false驗證失敗.
前臺模板頁建立index.htmlPHP實戰(zhàn)
<div class=""> <label for="j_verify" class="t">驗證碼:</label> <input id="j_verify" name="j_verify" type="text" class="form-control x in"> <img id="verify_img" alt="點擊更換" title="點擊更換" src="{:U('public/verify',array())}" class="m"> </div>
使用Thinkphp的U方法形成生成驗證碼的圖片.PHP實戰(zhàn)
點擊刷新驗證碼PHP實戰(zhàn)
從上面產(chǎn)生驗證碼的鏈接我們可以看出,域名/public/verify即可產(chǎn)生驗證碼.Thinkphp的驗證碼生成機制是,如若我們需要產(chǎn)生新的驗證碼,在該鏈接后加入一個變量值即可.PHP實戰(zhàn)
我們可以考慮實現(xiàn)public/verify/變量值的形式URL.
PHP實戰(zhàn)
$("#verify_img").click(function() { var verifyURL = "public/verify"; var time = new Date().getTime(); $("#verify_img").attr({ "src" : verifyURL + "/" + time }); });
利用JS獲取當(dāng)前時間戳加入到URL之后即可.PHP實戰(zhàn)
到此我們即可實現(xiàn)驗證碼的點擊刷新功能.具體表現(xiàn)形式,自己隨意哈.PHP實戰(zhàn)
異步校驗驗證碼PHP實戰(zhàn)
大家一定見過在某些網(wǎng)站,我們輸入驗證碼的時候,輸入的過程中文本框后面一直顯示錯誤,直到我們輸入爭取的時候會先提示驗證碼正確的形式.下面代碼就可以實現(xiàn):
PHP實戰(zhàn)
$("#j_verify").keyup(function() { $.post("public/check_verify", { code : $("#j_verify").val() }, function(data) { if (data == true) { //驗證碼輸入正確 } else { //驗證碼輸入錯誤 } }); });
利用onekeyup.原理就不需要多講了吧!PHP實戰(zhàn)
這樣我們就可以實現(xiàn)在提交用戶名密碼之前先進行一次驗證碼校驗,之后表單提交之后再進行一次校驗,提升用戶體驗啦!PHP實戰(zhàn)
還沒結(jié)束:PHP實戰(zhàn)
當(dāng)我們采取以上形式實現(xiàn)驗證碼兩次校驗的時候,肯定會出現(xiàn)第一次異步校驗成功,但是提交表單卻提示驗證碼錯誤的情況!其實原因還是出在Thinkphp的Verify.class.php上:PHP實戰(zhàn)
以下是該類初始的config配置:
PHP實戰(zhàn)
protected $config = array( 'seKey' => 'ThinkPHP.CN', // 驗證碼加密密鑰 'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY', // 驗證碼字符集合 'expire' => 1800, // 驗證碼過期時間(s) 'useZh' => false, // 使用中文驗證碼 'zhSet' => '……此處不粘貼了,太多了!', // 中文驗證碼字符串 'useImgBg' => false, // 使用背景圖片 'fontSize' => 25, // 驗證碼字體大小(px) 'useCurve' => false, // 是否畫混淆曲線 'useNoise' => false, // 是否添加雜點 'imageH' => 0, // 驗證碼圖片高度 'imageW' => 0, // 驗證碼圖片寬度 'length' => 5, // 驗證碼位數(shù) 'fontttf' => '', // 驗證碼字體,不設(shè)置隨機獲取 'bg' => array(243, 251, 254), // 背景顏色 'reset' => true, // 驗證成功后是否重置 );
請大家注意最后一個屬性reset 表示的是驗證成功后是否重置驗證碼.相信大家都明白了吧,我們進行第一次校驗通過之后,其實該驗證碼已經(jīng)失效了,只不過因為我們采取的是異步校驗,頁面并沒有刷新,導(dǎo)致了第二次申請校驗的時候和系統(tǒng)產(chǎn)生的已經(jīng)是不相同的了.所以如果大家喜歡這種兩次校驗的風(fēng)格,可以考慮將reset配置為false即可.PHP實戰(zhàn)
好了,基于Thinkphp3.2.3的驗證碼問題今天就總結(jié)到這了.只是大概說了一下實現(xiàn)方法,具體內(nèi)容還請大家參考TP官方手冊.如有錯誤之處,歡迎大家指出.PHP實戰(zhàn)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持維易PHP.PHP實戰(zhàn)
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/2158.html