這篇文章主要介紹了ThinkPHP框架之驗(yàn)證碼的使用案例,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
我們注重客戶提出的每個(gè)要求,我們充分考慮每一個(gè)細(xì)節(jié),我們積極的做好成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)服務(wù),我們努力開拓更好的視野,通過不懈的努力,成都創(chuàng)新互聯(lián)贏得了業(yè)內(nèi)的良好聲譽(yù),這一切,也不斷的激勵著我們更好的服務(wù)客戶。 主要業(yè)務(wù):網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),小程序開發(fā),網(wǎng)站開發(fā),技術(shù)開發(fā)實(shí)力,DIV+CSS,PHP及ASP,ASP.Net,SQL數(shù)據(jù)庫的技術(shù)開發(fā)工程師。Think\Verify類可以支持驗(yàn)證碼的生成和驗(yàn)證功能。
下面是最簡單的方式生成驗(yàn)證碼:
$Verify = new \Think\Verify();$Verify->entry();
上面的代碼會生成默認(rèn)的驗(yàn)證碼圖片并輸出,顯示如下:
生成的驗(yàn)證碼信息會保存到session中,包含的數(shù)據(jù)有:
array('verify_code'=>'當(dāng)前驗(yàn)證碼的值','verify_time'=>'驗(yàn)證碼生成的時(shí)間戳')
如果你需要在一個(gè)頁面中生成多個(gè)驗(yàn)證碼的話,entry方法需要傳入可標(biāo)識的信息。
可以對生成的驗(yàn)證碼設(shè)置相關(guān)的參數(shù),以達(dá)到不同的顯示效果。這些參數(shù)包括:
參數(shù) | 描述 |
---|---|
expire | 驗(yàn)證碼的有效期(秒) |
useImgBg | 是否使用背景圖片 默認(rèn)為false |
fontSize | 驗(yàn)證碼字體大?。ㄏ袼兀?默認(rèn)為25 |
useCurve | 是否使用混淆曲線 默認(rèn)為true |
useNoise | 是否添加雜點(diǎn) 默認(rèn)為true |
imageW | 驗(yàn)證碼寬度 設(shè)置為0為自動計(jì)算 |
imageH | 驗(yàn)證碼高度 設(shè)置為0為自動計(jì)算 |
length | 驗(yàn)證碼位數(shù) |
fontttf | 指定驗(yàn)證碼字體 默認(rèn)為隨機(jī)獲取 |
useZh | 是否使用中文驗(yàn)證碼 |
bg | 驗(yàn)證碼背景顏色 rgb數(shù)組設(shè)置,例如 array(243, 251, 254) |
seKey | 驗(yàn)證碼的加密密鑰 |
codeSet | 驗(yàn)證碼字符集合 3.2.1 新增 |
zhSet | 驗(yàn)證碼字符集合(中文) 3.2.1 新增 |
默認(rèn)參數(shù)配置:
參數(shù)設(shè)置使用兩種方式。
實(shí)例化傳入?yún)?shù):
或者采用動態(tài)設(shè)置的方式,如:
默認(rèn)情況下,驗(yàn)證碼的字體是隨機(jī)使用ThinkPHP/Library/Think/Verify/ttfs/
目錄下面的字體文件,我們可以指定驗(yàn)證碼的字體,例如:
$Verify = new \Think\Verify();// 驗(yàn)證碼字體使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf$Verify->fontttf = '5.ttf';$Verify->entry();
支持驗(yàn)證碼背景圖片功能,可以如下設(shè)置:
$Verify = new \Think\Verify();// 開啟驗(yàn)證碼背景圖片功能 隨機(jī)使用 ThinkPHP/Library/Think/Verify/bgs 目錄下面的圖片$Verify->useImgBg = true;$Verify->entry();
如果要使用中文驗(yàn)證碼,可以設(shè)置:
$Verify = new \Think\Verify();// 驗(yàn)證碼字體使用 ThinkPHP/Library/Think/Verify/zhttfs/simhei.ttf$Verify->useZh = true;$Verify->entry();
顯示效果如圖:
如果無法正常顯示,請確認(rèn)你的 ThinkPHP/Library/Think/Verify/zhttfs/ 目錄下面存在中文字體文件。
若ThinkPHP/Library/Think/Verify/zhttfs/里面沒有中文字體文件,可以下載或者從C:\Windows\Fonts\里面找到中文字體文件復(fù)制過來,注意字體文件擴(kuò)展名為.ttf。
可以用Think\Verify類的check
方法檢測驗(yàn)證碼的輸入是否正確,例如,下面是封裝的一個(gè)驗(yàn)證碼檢測的函數(shù):
// 檢測輸入的驗(yàn)證碼是否正確,$code為用戶輸入的驗(yàn)證碼字符串function check_verify($code, $id = ''){$verify = new \Think\Verify();return $verify->check($code, $id); }
練習(xí):以登錄為例:
控制器方法:
display(); } else { $code = $_POST["yzm"]; $verify = new \Think\Verify(); if($verify->check($code,2)) //code是用戶輸入的值 ,2是驗(yàn)證碼檢測標(biāo)示,必須與生成的驗(yàn)證碼標(biāo)示相同才能驗(yàn)證 { if($_POST["uid"]!="" && $_POST["pwd"]!="") { $model = D("Users"); $uid = $_POST["uid"]; $pwd = $_POST["pwd"]; $attr = $model->field("Pwd")->find($uid); //var_dump($attr); if($pwd==$attr["pwd"]) { session("uid",$uid); // 跳轉(zhuǎn)頁面之前將$uid存入session $this->success("登錄成功!","Main"); } else { $this->error("登錄失?。?); } } else { $this->error("用戶名或者密碼不能為空!"); } } else { $this->error("驗(yàn)證碼不正確!"); } } }//生成驗(yàn)證碼的操作方法 function yzm() { $config = array( 'fontSize' => 30, // 驗(yàn)證碼字體大小 'length' => 4, // 驗(yàn)證碼位數(shù) 'useCurve' => true, // 是否畫混淆曲線 'useNoise' => true, // 關(guān)閉驗(yàn)證碼雜點(diǎn) 'expire' => 60, // 驗(yàn)證碼有效期(秒) 'useImgBg' => false, // 使用背景圖片 'useZh' => true, // 使用中文驗(yàn)證碼 'imageW' => 240, // 驗(yàn)證碼寬度 'imageH' => 60, // 驗(yàn)證碼高度 'fontttf' => 'simhei.ttf', // 驗(yàn)證碼字體 ); $Verify = new \Think\Verify($config); $Verify->entry(2);//參數(shù)是生成驗(yàn)證碼的標(biāo)示,適用于同一個(gè)頁面有多個(gè)驗(yàn)證碼的時(shí)候,生成驗(yàn)證碼的標(biāo)示必須與檢測驗(yàn)證碼的標(biāo)示相同,否則驗(yàn)證碼不正確 }?>
請求Login方法:
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“ThinkPHP框架之驗(yàn)證碼的使用案例”這篇文章對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!