《PHP應(yīng)用:thinkphp3.2點擊刷新生成驗證碼》要點:
本文介紹了PHP應(yīng)用:thinkphp3.2點擊刷新生成驗證碼,希望對您有用。如果有疑問,可以聯(lián)系我們。
相關(guān)主題:thinkphp教程
再介紹thinkphp3.2驗證碼的使用辦法之前,先為大家詳細介紹ThinkPHP 驗證碼,具體內(nèi)容如下PHP實戰(zhàn)
ThinkPHP 內(nèi)置了驗證碼的支持,可以直接使用.要使用驗證碼,需要導入擴展類庫中的 ORG.Util.Image 類庫和 ORG.Util.String 類庫.
驗證碼辦法
我們通過在在模塊類中增加一個 verify 辦法來用于顯示驗證碼,最簡單的例子:
PHP實戰(zhàn)
Public function verify(){ // 導入Image類庫 import("ORG.Util.Image"); Image::buildImageVerify(); }
import 辦法是 ThinkPHP 內(nèi)置的類庫和文件導入辦法,上例導入的文件為 ThinkPHP 系統(tǒng)目錄下 Lib/ORG/Util/Image.class.php 文件.如果已經(jīng)將 Image 類庫拷貝到了當前項目下,如 Lib/ORG 下,則可以以:
PHP實戰(zhàn)
import("@.Util.Image");
import 方法是 ThinkPHP 內(nèi)置的類庫和文件導入方法,上例導入的文件為 ThinkPHP 系統(tǒng)目錄下 Lib/ORG/Util/Image.class.php 文件.
拜訪驗證碼
可以直接在瀏覽器里拜訪該驗證碼方法以確定驗證碼是否能正常顯示:
http://127.0.0.1/index.php/Public/verify
如果一切正常,顯示驗證碼如下所示:
PHP實戰(zhàn)
PHP實戰(zhàn)
表單中使用驗證碼
在表單頁面中使用驗證碼,是以 html img標簽 來調(diào)用:
PHP實戰(zhàn)
<input type="text" name="verify"> <img id="verifyImg" src="-Article-verify" onClick="changeVerify()" title="點擊刷新驗證碼" />
src 屬性值即為驗證碼方法拜訪地址,視實際情況不同而不同.
驗證碼刷新
當點擊驗證碼圖片時,觸發(fā) JavaScript changeVerify() 函數(shù)重新讀取驗證碼,從而實現(xiàn)驗證碼刷新.該函數(shù)參考如下:
PHP實戰(zhàn)
<script language="JavaScript"> function changeVerify(){ var timenow = new Date().getTime(); document.getElementById('verifyImg').src='-Article/verify/'+timenow; } </script>
驗證碼驗證
在調(diào)用驗證碼 verify 的時候,buildImageVerify 會記錄本次驗證碼的 MD5 信息.在表單驗證操作里,以如下辦法來檢查驗證碼是否正確:
PHP實戰(zhàn)
if($_SESSION['verify'] != md5($_POST['verify'])) { $this->error('驗證碼錯誤!'); }
其中 $_SESSION['verify'] 中的 verify 名稱為 buildImageVerify 辦法默認 SESSION 注冊名稱,具體見 buildImageVerify 語法.
上面例子演示了最簡單的 ThinkPHP 驗證碼的使用辦法.上面的例子驗證碼是 4 位數(shù)字,如果想使用更多風格的驗證碼以及中文驗證碼,參見本節(jié)其余部分內(nèi)容:《ThinkPHP 使用不同風格及中文的驗證碼》.
驗證碼不顯示原因
如下發(fā)現(xiàn)無法顯示驗證碼,可能的原因如下:
1、PHP 是否已經(jīng)安裝 GD 庫支持.
2、輸出之前是否有任何的輸出(尤其是 UTF8 的 BOM 頭信息輸出).
3、Image 類庫是否正確導入.
4、如果是表單頁面,請查看是否正確調(diào)用了驗證碼顯示辦法.PHP實戰(zhàn)
下面就為大家介紹 thinkphp3.2 驗證碼生成和點擊刷新驗證碼的實現(xiàn)辦法,具體內(nèi)容如下PHP實戰(zhàn)
一、實例化生成驗證碼的類(該方法放到IndexController里面便于拜訪)
PHP實戰(zhàn)
/** * * 驗證碼生成 */ public function verify_c(){ $Verify = new \Think\Verify(); $Verify->fontSize = 18; $Verify->length = 4; $Verify->useNoise = false; $Verify->codeSet = '0123456789'; $Verify->imageW = 130; $Verify->imageH = 50; //$Verify->expire = 600; $Verify->entry(); }
二、前臺需要生成驗證碼的圖片src屬性指向
PHP實戰(zhàn)
<p class="top15 captcha" id="captcha-container"> <input name="verify" width="50%" height="50" class="captcha-text" placeholder="驗證碼" type="text"> <img width="30%" class="left15" height="50" alt="驗證碼" src="{:U('Home/Index/verify_c',array())}" title="點擊刷新"> </p>
三、寫完上面的后,頁面初始化的驗證碼就可以出現(xiàn)了,下面要寫的就是點擊驗證碼圖片后,刷新出新的驗證碼圖片(通過jquery修改圖片的src屬性來完成,哀求的處理函數(shù)一樣,只是在哀求后加一個隨機數(shù),區(qū)別上一張圖片的哀求)
PHP實戰(zhàn)
// 驗證碼生成 var captcha_img = $('#captcha-container').find('img') var verifyimg = captcha_img.attr("src"); captcha_img.attr('title', '點擊刷新'); captcha_img.click(function(){ if( verifyimg.indexOf('?')>0){ $(this).attr("src", verifyimg+'&random='+Math.random()); }else{ $(this).attr("src", verifyimg.replace(/\?.*$/,'')+'?'+Math.random()); } });
四、校驗驗證碼輸入是否正確
a.在common目錄下的function.php里加入全局函數(shù)
PHP實戰(zhàn)
/** * 驗證碼檢查 */ function check_verify($code, $id = ""){ $verify = new \Think\Verify(); return $verify->check($code, $id); }
b.在表單提交的controller對應(yīng)的處理辦法里添加檢查代碼
PHP實戰(zhàn)
// 檢查驗證碼 $verify = I('param.verify',''); if(!check_verify($verify)){ $this->error("親,驗證碼輸錯了哦!",$this->site_url,9); }
到此tp3.2驗證碼的使用就可以了.
補充:我在寫的時候?qū)⑺牡腷步驟放到一個ajax里驗證,返回一次檢驗結(jié)果.然后再依據(jù)返回結(jié)果確定是否要提交表單,但是在驗證碼通過第一次的校驗后,第二次的就不可以了,目前還沒想明白原因.PHP實戰(zhàn)
這就是本文的全部內(nèi)容,文章最后還有一個小小的疑問,希望大家可以想出解決方法,也希望本文對大家的學習有所幫助.PHP實戰(zhàn)
《PHP應(yīng)用:thinkphp3.2點擊刷新生成驗證碼》是否對您有啟發(fā),歡迎查看更多與《PHP應(yīng)用:thinkphp3.2點擊刷新生成驗證碼》相關(guān)教程,學精學透。維易PHP學院為您提供精彩教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/7539.html