您好,登錄后才能下訂單哦!
這篇文章主要介紹了ThinkPHP框架之驗證碼的使用案例,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Think\Verify類可以支持驗證碼的生成和驗證功能。
下面是最簡單的方式生成驗證碼:
$Verify = new \Think\Verify();$Verify->entry();
上面的代碼會生成默認的驗證碼圖片并輸出,顯示如下:
生成的驗證碼信息會保存到session中,包含的數據有:
array('verify_code'=>'當前驗證碼的值','verify_time'=>'驗證碼生成的時間戳')
如果你需要在一個頁面中生成多個驗證碼的話,entry方法需要傳入可標識的信息。
可以對生成的驗證碼設置相關的參數,以達到不同的顯示效果。這些參數包括:
參數 | 描述 |
---|---|
expire | 驗證碼的有效期(秒) |
useImgBg | 是否使用背景圖片 默認為false |
fontSize | 驗證碼字體大小(像素) 默認為25 |
useCurve | 是否使用混淆曲線 默認為true |
useNoise | 是否添加雜點 默認為true |
imageW | 驗證碼寬度 設置為0為自動計算 |
imageH | 驗證碼高度 設置為0為自動計算 |
length | 驗證碼位數 |
fontttf | 指定驗證碼字體 默認為隨機獲取 |
useZh | 是否使用中文驗證碼 |
bg | 驗證碼背景顏色 rgb數組設置,例如 array(243, 251, 254) |
seKey | 驗證碼的加密密鑰 |
codeSet | 驗證碼字符集合 3.2.1 新增 |
zhSet | 驗證碼字符集合(中文) 3.2.1 新增 |
默認參數配置:
參數設置使用兩種方式。
實例化傳入參數:
或者采用動態設置的方式,如:
默認情況下,驗證碼的字體是隨機使用 ThinkPHP/Library/Think/Verify/ttfs/
目錄下面的字體文件,我們可以指定驗證碼的字體,例如:
$Verify = new \Think\Verify();// 驗證碼字體使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf$Verify->fontttf = '5.ttf';$Verify->entry();
支持驗證碼背景圖片功能,可以如下設置:
$Verify = new \Think\Verify();// 開啟驗證碼背景圖片功能 隨機使用 ThinkPHP/Library/Think/Verify/bgs 目錄下面的圖片$Verify->useImgBg = true;$Verify->entry();
如果要使用中文驗證碼,可以設置:
$Verify = new \Think\Verify();// 驗證碼字體使用 ThinkPHP/Library/Think/Verify/zhttfs/simhei.ttf$Verify->useZh = true;$Verify->entry();
顯示效果如圖:
如果無法正常顯示,請確認你的 ThinkPHP/Library/Think/Verify/zhttfs/ 目錄下面存在中文字體文件。
若ThinkPHP/Library/Think/Verify/zhttfs/里面沒有中文字體文件,可以下載或者從C:\Windows\Fonts\里面找到中文字體文件復制過來,注意字體文件擴展名為.ttf。
可以用Think\Verify類的check
方法檢測驗證碼的輸入是否正確,例如,下面是封裝的一個驗證碼檢測的函數:
// 檢測輸入的驗證碼是否正確,$code為用戶輸入的驗證碼字符串function check_verify($code, $id = ''){$verify = new \Think\Verify();return $verify->check($code, $id); }
練習:以登錄為例:
控制器方法:
<?php namespace Home\Controller;use Think\Controller;class LoginController extends Controller { function Login() { if(empty($_POST)) { $this->display(); } else { $code = $_POST["yzm"]; $verify = new \Think\Verify(); if($verify->check($code,2)) //code是用戶輸入的值 ,2是驗證碼檢測標示,必須與生成的驗證碼標示相同才能驗證 { 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); // 跳轉頁面之前將$uid存入session $this->success("登錄成功!","Main"); } else { $this->error("登錄失敗!"); } } else { $this->error("用戶名或者密碼不能為空!"); } } else { $this->error("驗證碼不正確!"); } } }//生成驗證碼的操作方法 function yzm() { $config = array( 'fontSize' => 30, // 驗證碼字體大小 'length' => 4, // 驗證碼位數 'useCurve' => true, // 是否畫混淆曲線 'useNoise' => true, // 關閉驗證碼雜點 'expire' => 60, // 驗證碼有效期(秒) 'useImgBg' => false, // 使用背景圖片 'useZh' => true, // 使用中文驗證碼 'imageW' => 240, // 驗證碼寬度 'imageH' => 60, // 驗證碼高度 'fontttf' => 'simhei.ttf', // 驗證碼字體 ); $Verify = new \Think\Verify($config); $Verify->entry(2);//參數是生成驗證碼的標示,適用于同一個頁面有多個驗證碼的時候,生成驗證碼的標示必須與檢測驗證碼的標示相同,否則驗證碼不正確 }?>
請求Login方法:
感謝你能夠認真閱讀完這篇文章,希望小編分享的“ThinkPHP框架之驗證碼的使用案例”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。