ThinkPHP 8 验证码需通过 topthink/think-captcha 扩展实现,关键步骤为:检查 PHP ≥ 8.0、开启 OpenSSL 和 GD 扩展;Composer 安装扩展;启用 Session 中间件并运行 php think captcha:install;最后在控制器和模板中调用 captcha_img()、captcha_src() 和 captcha_check() 完成集成。

ThinkPHP 8 验证码不是内置功能,必须通过扩展包 topthink/think-captcha 手动安装并配置。只要环境准备到位、步骤不跳过,5分钟内完全可跑通——关键在三点:装对版本、开好扩展、配好 Session。
一、安装前先检查 PHP 环境
缺一不可,否则验证码图片直接空白或报错:
-
开启 OpenSSL 扩展:编辑
php.ini,取消注释extension=openssl -
开启 GD 库:同样在
php.ini中启用extension=gd(生成图片必需) - 确认 PHP ≥ 8.0,并已安装 Composer
改完记得重启 PHP 服务(如 php think run 重新启动)[^1]。
二、用 Composer 安装验证码包
进入你的 ThinkPHP 8 项目根目录(含 composer.json),执行:
立即学习“PHP免费学习笔记(深入)”;
composer require topthink/think-captcha
安装成功后,你会看到 vendor/topthink/think-captcha 目录生成。TP8 兼容该包最新稳定版,无需指定版本号[^3]。
三、启用 Session 并发布配置资源
验证码校验依赖 Session 存储验证码值,跳过这步必失败:
- 打开
app/middleware.php,确保\think\middleware\SessionInit::class已启用(取消注释) - 运行命令生成配置和静态资源:php think captcha:install
执行后会自动生成:
-
config/captcha.php(可按需修改位数、字体、干扰线等) -
public/static/captcha/(含 JS/CSS 和图片支持文件)
四、前后端快速使用示例
① 控制器中提供验证码接口(例如在 app/controller/User.php):
public function captcha() { return captcha_img(); }
② 模板中显示(如 login.html):
<img src="{:captcha_src()}" alt="验证码" onclick="this.src='{:captcha_src()}'+Math.random()">
③ 登录时验证(控制器中):
if (!captcha_check($captcha)) { $this->error('验证码错误'); }
其中 $captcha 是用户提交的输入值。注意大小写默认不敏感,无需额外转小写处理[^4]。



















