验证码的使用

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