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