ThinkPHP6需通过topthink/think-captcha扩展实现验证码功能,安装后执行php think captcha:install发布配置与静态资源,启用Session并注册CaptchaService,控制器调用Captcha::create()生成、模板嵌入动态图片,提交时用Captcha::check()校验。

ThinkPHP6 本身不带验证码功能,得靠 topthink/think-captcha 这个官方扩展包来实现。安装和调用其实很直接,关键在版本对得上、资源发得全、Session 开得稳。
确认版本并用 Composer 安装
TP6 必须用最新版的验证码包,不用锁版本:
- 进项目根目录(有 composer.json 和 think 脚本的那个目录)
- 终端执行:composer require topthink/think-captcha
- 成功后,vendor/topthink/think-captcha 目录会出现,且自动加载已就绪
发布配置与前端资源
安装只是把代码拉下来,真正让验证码跑起来还得发布配置和静态文件:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行命令:php think captcha:install
- 会自动生成 config/captcha.php 配置文件
- 同时把 captcha.js、captcha.css 和图片资源复制到 public/static/captcha/
- 如果命令报错或文件没生成,可手动创建 config/captcha.php,填入基础参数(如 length、fontSize、useNoise 等)
启用 Session 并注册服务
验证码校验依赖 Session 存储真实值,这步不能跳:
立即学习“PHP免费学习笔记(深入)”;
- 确保 app/middleware.php 或应用中间件配置中启用了 SessionInit
- 检查 config/app.php 的 providers 数组,确认已包含:
think\captcha\CaptchaService::class - 若未自动注册,手动加上即可,TP6.2+ 一般会自动发现,但显式写明更稳妥
控制器生成 + 模板嵌入
前后端连通只需两步:
- 控制器里写一个方法,例如:
use think\facade\Captcha;
public function captcha() { return Captcha::create(); } - 模板中嵌入图片标签:
<img src="{:url('captcha')}" onclick="this.src='{:url('captcha')}?'+Math.random()" title="点击换图"> - 表单提交时,用 Captcha::check($input) 校验用户输入是否匹配


















