本小节主要介绍 ThinkPHP
提供的验证码,验证码主要用于前端网页表单验证,防止数据重复提交或者恶意多次提交,本小节主要介绍一下验证码的使用,验证码的原理很简单,就是服务后端通过生成某个验证码图片,然后同时把验证码中对应的答案内容存入缓存,然后访问者必须要输入正确内容才能验证通过,需要注意的是实际业务中若是更加严格的验证方式,可以使用手机短信验证更加安全。
使用如下 composer
命令可加载验证码的拓展包:
composer require topthink/think-captcha
代码块预览 复制
- 1
如下图所示:
//生成验证码 Route::get('captcha','app\controller\Study\CaptchaController@createCaptcha');
代码块预览 复制
- 1
- 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(); } }
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
如下图所示:
在浏览器中请求结果如下:
这里以之前添加学生接口为例,可以添加如下代码:
$captcha = $this->request->param('captcha'); if(!captcha_check($captcha)){ // 验证失败 throw new HttpException(401, "验证码验证失败"); }else{ echo "验证成功"; }
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 6
- 7
如下图所示:
下面演示验证失败的情况:
下面演示验证成功的情况:
本小节主要介绍了 ThinkPHP
提供的验证码如何生成,然后在接口中可以校验验证码是否正确,验证码使用一次之后就失效了,可以有效地防止数据的重复提交或恶意提交,在实际业务中,通常使用第三方验证,如短信验证,拼图验证等等。
Tips: 代码仓库:https://gitee.com/love-for-poetry/tp6