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 捕获抛出的异常错误信息 > 校验 think-captcha 验证码的前提条件 #### 必须开启 Session 否则即使验证码输入正确也无法校验成功 #### 开启Session:在全局中间件定义文件`app/middleware.php`中取消`Session初始化`的注释 ![](https://img.kancloud.cn/08/ac/08acc49041e2de7f5bf8efb76ec3319b_1018x430.png) > 方案一:captcha\_check() 函数验证 ~~~ // $captcha 用户输入的验证码 // captcha_check($captcha) 成功 true 失败 false if(!captcha_check($captcha)){ // think-capthca 验证码校验失败 } ~~~ > 方案二:基础控制器的数据验证功能 ~~~ try { $this->validate([ 'vercode' => '用户输入的验证码' ], [ 'vercode|验证码' => 'require|min:4|captcha' ], [ 'vercode.min' => '验证码长度不能低于4位', 'vercode.captcha' => '您输入的验证码有误', ]); } catch (\think\exception\ValidateException $e) { return $e->getError(); } ~~~ > 方案三:基础控制器和验证器进行校验 * 定义验证器 ~~~ <?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(); } ~~~