ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## think-captcha 验证码校验 + 方案一:captcha_check() 函数验证 + 参考TP6.0官方手册:`扩展库` - `验证码` 章节 [点击进入](https://www.kancloud.cn/manual/thinkphp6_0/1246402) + 方案一适合只返回验证`成功和失败`或`在模型中校验验证码`的情况 + 方案二和方案三更加灵活, 可以返回不同的验证码错误信息,但是必须在控制器中使用 + 方案二:基础控制器的数据验证功能 + $this->validate() 执行数据验证 + \think\exception\ValidateException 捕获抛出的异常错误信息 + 方案三:基础控制器和验证器进行校验 + 定义验证器 + $this->validate() 执行数据验证 + \think\exception\ValidateException 捕获抛出的异常错误信息 >[danger] 校验 think-captcha 验证码的前提条件 #### 必须开启 Session 否则即使验证码输入正确也无法校验成功 #### 开启Session:在全局中间件定义文件`app/middleware.php`中取消 `Session初始化` 的注释 ![](https://img.kancloud.cn/08/ac/08acc49041e2de7f5bf8efb76ec3319b_1018x430.png) >[danger] 方案一:captcha_check() 函数验证 ``` // $captcha 用户输入的验证码 // captcha_check($captcha) 成功 true 失败 false if(!captcha_check($captcha)){ // think-capthca 验证码校验失败 } ``` >[danger] 方案二:基础控制器的数据验证功能 ``` try { $this->validate([ 'vercode' => '用户输入的验证码' ], [ 'vercode|验证码' => 'require|min:4|captcha' ], [ 'vercode.min' => '验证码长度不能低于4位', 'vercode.captcha' => '您输入的验证码有误', ]); } catch (\think\exception\ValidateException $e) { return $e->getError(); } ``` >[danger] 方案三:基础控制器和验证器进行校验 + 定义验证器 ``` <?php namespace app\admin\validate; use think\Validate; class Admin extends Validate { protected $rule = [ 'vercode|验证码'=>'require|min:4|captcha' ]; protected $message = [ 'vercode.min' => '验证器提示您:验证码长度不能低于4位', 'vercode.captcha' => '验证器提示您:您输入的验证码有误', ]; } ``` + 执行校验 ``` try { $this->validate(input('post.'), 'app\admin\validate\Admin'); } catch (\think\exception\ValidateException $e) { return $e->getError(); } ```