国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

thinkphp3.2點(diǎn)擊刷新生成驗(yàn)證碼

2024-05-04 23:43:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了thinkphp3.2點(diǎn)擊刷新生成驗(yàn)證碼的相關(guān)資料,需要的朋友可以參考下
 

再介紹thinkphp3.2驗(yàn)證碼的使用方法之前,先為大家詳細(xì)介紹ThinkPHP 驗(yàn)證碼,具體內(nèi)容如下

ThinkPHP 內(nèi)置了驗(yàn)證碼的支持,可以直接使用。要使用驗(yàn)證碼,需要導(dǎo)入擴(kuò)展類(lèi)庫(kù)中的 ORG.Util.Image 類(lèi)庫(kù)和 ORG.Util.String 類(lèi)庫(kù)。
驗(yàn)證碼方法
我們通過(guò)在在模塊類(lèi)中增加一個(gè) verify 方法來(lái)用于顯示驗(yàn)證碼,最簡(jiǎn)單的例子:

Public function verify(){  // 導(dǎo)入Image類(lèi)庫(kù)  import("ORG.Util.Image");  Image::buildImageVerify();}

import 方法是 ThinkPHP 內(nèi)置的類(lèi)庫(kù)和文件導(dǎo)入方法,上例導(dǎo)入的文件為 ThinkPHP 系統(tǒng)目錄下 Lib/ORG/Util/Image.class.php 文件。如果已經(jīng)將 Image 類(lèi)庫(kù)拷貝到了當(dāng)前項(xiàng)目下,如 Lib/ORG 下,則可以以:

import("@.Util.Image");

import 方法是 ThinkPHP 內(nèi)置的類(lèi)庫(kù)和文件導(dǎo)入方法,上例導(dǎo)入的文件為 ThinkPHP 系統(tǒng)目錄下 Lib/ORG/Util/Image.class.php 文件。
訪問(wèn)驗(yàn)證碼
可以直接在瀏覽器里訪問(wèn)該驗(yàn)證碼方法以確定驗(yàn)證碼是否能正常顯示:
http://127.0.0.1/index.php/Public/verify
如果一切正常,顯示驗(yàn)證碼如下所示:

thinkphp3.2點(diǎn)擊刷新生成驗(yàn)證碼

表單中使用驗(yàn)證碼
在表單頁(yè)面中使用驗(yàn)證碼,是以 html img標(biāo)簽 來(lái)調(diào)用:

<input type="text" name="verify"><img id="verifyImg" src="-Article-verify" onClick="changeVerify()" style="margin: 0px; padding: 0px; line-height: 25.2px; width: 660px; overflow: hidden; clear: both;">		
<script language="JavaScript">function changeVerify(){ var timenow = new Date().getTime(); document.getElementById('verifyImg').src='-Article/verify/'+timenow; }</script>

驗(yàn)證碼驗(yàn)證
在調(diào)用驗(yàn)證碼 verify 的時(shí)候,buildImageVerify 會(huì)記錄本次驗(yàn)證碼的 MD5 信息。在表單驗(yàn)證操作里,以如下方法來(lái)檢查驗(yàn)證碼是否正確:

if($_SESSION['verify'] != md5($_POST['verify'])) {  $this->error('驗(yàn)證碼錯(cuò)誤!');}

其中 $_SESSION['verify'] 中的 verify 名稱(chēng)為 buildImageVerify 方法默認(rèn) SESSION 注冊(cè)名稱(chēng),具體見(jiàn) buildImageVerify 語(yǔ)法。
上面例子演示了最簡(jiǎn)單的 ThinkPHP 驗(yàn)證碼的使用方法。上面的例子驗(yàn)證碼是 4 位數(shù)字,如果想使用更多風(fēng)格的驗(yàn)證碼以及中文驗(yàn)證碼,參見(jiàn)本節(jié)其余部分內(nèi)容:《ThinkPHP 使用不同風(fēng)格及中文的驗(yàn)證碼》。
驗(yàn)證碼不顯示原因
如下發(fā)現(xiàn)無(wú)法顯示驗(yàn)證碼,可能的原因如下:
1、PHP 是否已經(jīng)安裝 GD 庫(kù)支持。
2、輸出之前是否有任何的輸出(尤其是 UTF8 的 BOM 頭信息輸出)。
3、Image 類(lèi)庫(kù)是否正確導(dǎo)入。
4、如果是表單頁(yè)面,請(qǐng)查看是否正確調(diào)用了驗(yàn)證碼顯示方法。

下面就為大家介紹 thinkphp3.2 驗(yàn)證碼生成和點(diǎn)擊刷新驗(yàn)證碼的實(shí)現(xiàn)方法,具體內(nèi)容如下

一、實(shí)例化生成驗(yàn)證碼的類(lèi)(該方法放到IndexController里面便于訪問(wèn))

/**  *  * 驗(yà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(); } 

二、前臺(tái)需要生成驗(yàn)證碼的圖片src屬性指向

<p class="top15 captcha" id="captcha-container">  <input name="verify" width="50%" height="50" class="captcha-text" placeholder="驗(yàn)證碼" type="text">          <img width="30%" class="left15" height="50" style="margin: 0px; padding: 0px; line-height: 25.2px; width: 660px; overflow: hidden; clear: both;">		
// 驗(yàn)證碼生成 var captcha_img = $('#captcha-container').find('img') var verifyimg = captcha_img.attr("src"); captcha_img.attr('title', '點(diǎn)擊刷新'); captcha_img.click(function(){   if( verifyimg.indexOf('?')>0){     $(this).attr("src", verifyimg+'&random='+Math.random());   }else{     $(this).attr("src", verifyimg.replace(//?.*$/,'')+'?'+Math.random());   } }); 

四、校驗(yàn)驗(yàn)證碼輸入是否正確
a.在common目錄下的function.php里加入全局函數(shù)

/**  * 驗(yàn)證碼檢查  */ function check_verify($code, $id = ""){   $verify = new /Think/Verify();   return $verify->check($code, $id); } 

b.在表單提交的controller對(duì)應(yīng)的處理方法里添加檢查代碼

// 檢查驗(yàn)證碼 $verify = I('param.verify',''); if(!check_verify($verify)){   $this->error("親,驗(yàn)證碼輸錯(cuò)了哦!",$this->site_url,9); } 

到此tp3.2驗(yàn)證碼的使用就可以了。
補(bǔ)充:我在寫(xiě)的時(shí)候?qū)⑺牡腷步驟放到一個(gè)ajax里驗(yàn)證,返回一次檢驗(yàn)結(jié)果。然后再依據(jù)返回結(jié)果確定是否要提交表單,但是在驗(yàn)證碼通過(guò)第一次的校驗(yàn)后,第二次的就不可以了,目前還沒(méi)想明白原因。

這就是本文的全部?jī)?nèi)容,文章最后還有一個(gè)小小的疑問(wèn),希望大家可以想出解決辦法,也希望本文對(duì)大家的學(xué)習(xí)有所幫助。



注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 巩义市| 怀集县| 客服| 梨树县| 韶山市| 突泉县| 石家庄市| 嫩江县| 阿坝| 蛟河市| 峨眉山市| 桃江县| 郑州市| 泰顺县| 南开区| 正定县| 博罗县| 永登县| 辉县市| 封开县| 朔州市| 中山市| 卫辉市| 台南市| 德兴市| 类乌齐县| 会同县| 区。| 辉南县| 紫阳县| 唐山市| 玉林市| 浦县| 安化县| 宁蒗| 延吉市| 吴堡县| 山丹县| 桓仁| 汨罗市| 巨鹿县|