驗證碼的使用
1.前言
本小節(jié)主要介紹 ThinkPHP
提供的驗證碼,驗證碼主要用于前端網頁表單驗證,防止數據重復提交或者惡意多次提交,本小節(jié)主要介紹一下驗證碼的使用,驗證碼的原理很簡單,就是服務后端通過生成某個驗證碼圖片,然后同時把驗證碼中對應的答案內容存入緩存,然后訪問者必須要輸入正確內容才能驗證通過,需要注意的是實際業(yè)務中若是更加嚴格的驗證方式,可以使用手機短信驗證更加安全。
2.加載 think-captcha 拓展包
使用如下 composer
命令可加載驗證碼的拓展包:
composer require topthink/think-captcha
如下圖所示:
3.新建一個驗證碼生成接口
3.1 定義路由
//生成驗證碼
Route::get('captcha','app\controller\Study\CaptchaController@createCaptcha');
如下圖所示:
3.2 新建驗證碼生成方法
<?php
namespace app\controller\Study;
use app\BaseController;
use think\captcha\facade\Captcha;
class CaptchaController extends BaseController
{
/**
* 生成驗證碼
* @return \think\Response
*/
public function createCaptcha()
{
return Captcha::create();
}
}
如下圖所示:
在瀏覽器中請求結果如下:
4.驗證碼驗證
這里以之前添加學生接口為例,可以添加如下代碼:
$captcha = $this->request->param('captcha');
if(!captcha_check($captcha)){
// 驗證失敗
throw new HttpException(401, "驗證碼驗證失敗");
}else{
echo "驗證成功";
}
如下圖所示:
下面演示驗證失敗的情況:
下面演示驗證成功的情況:
5.小結
本小節(jié)主要介紹了 ThinkPHP
提供的驗證碼如何生成,然后在接口中可以校驗驗證碼是否正確,驗證碼使用一次之后就失效了,可以有效地防止數據的重復提交或惡意提交,在實際業(yè)務中,通常使用第三方驗證,如短信驗證,拼圖驗證等等。
Tips: 代碼倉庫:https://gitee.com/love-for-poetry/tp6