验证码的使用
1.前言
本小节主要介绍 ThinkPHP
提供的验证码,验证码主要用于前端网页表单验证,防止数据重复提交或者恶意多次提交,本小节主要介绍一下验证码的使用,验证码的原理很简单,就是服务后端通过生成某个验证码图片,然后同时把验证码中对应的答案内容存入缓存,然后访问者必须要输入正确内容才能验证通过,需要注意的是实际业务中若是更加严格的验证方式,可以使用手机短信验证更加安全。
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.小结
本小节主要介绍了 ThinkPHP
提供的验证码如何生成,然后在接口中可以校验验证码是否正确,验证码使用一次之后就失效了,可以有效地防止数据的重复提交或恶意提交,在实际业务中,通常使用第三方验证,如短信验证,拼图验证等等。
Tips: 代码仓库:https://gitee.com/love-for-poetry/tp6