ThinkPHP6项目基操(12.实战部分 验证码)
驗證碼
- 一、安裝驗證碼
- 二、模板中使用
- 三、修改驗證碼配置
- 四、自定義驗證碼
- 1. 創建
- 2. 配置
- 3. 使用
- 五、驗證
TP6 有內置驗證碼插件,只需簡單安裝和配置即可使用,而且驗證碼的驗證也非常方便,下面開始表演。
一、安裝驗證碼
composer require topthink/think-captcha二、模板中使用
將原來靜態頁面的驗證碼圖片替換為{:captcha_img()},這個會自動生成驗證碼圖片。
<div style="margin-left: 10px;">{:captcha_img()} </div>生成的html代碼為:
<img src="/captcha.html?0.12285642498823002" alt="captcha" onclick="this.src="/captcha.html?"+Math.random();">從生成的代碼可以看出,點擊圖片可以切換圖片。生成的圖片:
如果圖片沒有出來,檢查下路徑是否正確,路由是否正確。瀏覽器直接訪問http://tp6.com/captcha也會顯示二維碼,如果沒有顯示就考慮路由的正確性。
三、修改驗證碼配置
在config目錄新建captcha.php:
<?phpreturn ['length' => 4,'codeSet' => '0123456789','useCurve' => false ];具體可配置的項:
| codeSet | 驗證碼字符集合 | 略 |
| expire | 驗證碼過期時間(s) | 1800 |
| math | 使用算術驗證碼 | false |
| useZh | 使用中文驗證碼 | false |
| zhSet | 中文驗證碼字符串 | 略 |
| useImgBg | 使用背景圖片 | false |
| fontSize | 驗證碼字體大小(px) | 25 |
| useCurve | 是否畫混淆曲線 | true |
| useNoise | 是否添加雜點 | true |
| imageH | 驗證碼圖片高度,設置為0為自動計算 | 0 |
| imageW | 驗證碼圖片寬度,設置為0為自動計算 | 0 |
| length | 驗證碼位數 | 5 |
| fontttf | 驗證碼字體,不設置是隨機獲取 | 空 |
| bg | 背景顏色 | [243, 251, 254] |
| reset | 驗證成功后是否重置 | true |
四、自定義驗證碼
1. 創建
除了使用默認的方式{:captcha_img()},還可以通過think\captcha\facade\Captcha類自行創建驗證碼。
<?phpnamespace app\admin\controller; use think\captcha\facade\Captcha;class Verify {public function index(){return Captcha::create();} }通過這個控制器也能正常返回驗證碼:
2. 配置
自定義驗證碼也可以配置,可以在config/captcha.php文件里定義一個配置,然后在創建的時候傳入配置key即可:
captcha.php:
修改Verify控制器:
return Captcha::create('my_set');秀一下:
3. 使用
<img src="{:url('verify/index')}" class="layadmin-user-login-codeimg">想要點擊切換驗證碼,可以添加個onclick事件,自行仿照原生的做法。
五、驗證
框架的內置驗證功能:
$this->validate($data,['captcha|驗證碼'=>'require|captcha' ]);如果沒有使用內置驗證功能,則可以調研內置的函數手動驗證
if(!captcha_check($captcha)){// 驗證失敗 };這里需要注意的是TP6默認沒有開啟Session,需要自行開啟,而這里的驗證碼驗證需要使用到session功能,所以修改app目錄下的中間件文件middleware.php,將\think\middleware\SessionInit::class的注釋放開即可。
??重磅推薦:免費商用電商系統
😏想白嫖整個電商系統用來商用?
🤑想有自己的商城實現財富自由?
🤓想學習最佳實踐提升自己技術?
快來進入🚀 傳送門 🚀,開源免費、完整示例帶你快速入門,輕松二開,走上人生巔峰!👨?🎓
總結
以上是生活随笔為你收集整理的ThinkPHP6项目基操(12.实战部分 验证码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ThinkPHP6项目基操(16.实战部
- 下一篇: ThinkPHP6项目基操(15.实战部