thinkphp6验证码需按安装、配置、显示、校验四步顺序完成:安装扩展包、手动创建config/captcha.php配置文件、控制器中用captcha::create()返回图片、前端展示并提交后调用captcha_check校验。

ThinkPHP6验证码不是装完包就能用的组件,必须按顺序完成安装、配置、显示、校验四步,缺一不可。下面直奔重点,5分钟内走通全流程。
安装扩展包
在项目根目录执行命令:
- composer require topthink/think-captcha
执行成功后,检查 vendor/topthink/think-captcha 目录是否存在;若不存在,说明安装失败,需检查网络或镜像源。TP6不内置该功能,跳过这步后续所有操作都会报 Class not found。
手动创建配置文件
安装完后,必须手动创建 config/captcha.php 文件(TP6.1+ 可用 php think vendor:publish --tag=captcha 自动生成,但低版本不支持)。文件内容至少包含:
- 'length' => 4(推荐4位,兼顾安全与体验)
- 'expire' => 1800(30分钟过期)
- 'useNoise' => true 和 'useCurve' => true(启用杂点和干扰线,防OCR识别)
注意:不要照搬TP5配置,fontttf 已废弃,如需中文请用 font_path 指向真实存在的中文字体文件(如 simhei.ttf),且路径必须是绝对路径。
控制器中生成并返回图片
在控制器里写一个方法,例如 index/captcha:
- 用 return \think\captcha\facade\Captcha::create();
- 不要用
echo、dump或exit,必须是 HTTP 响应流
同时确保已开启 Session 中间件:打开 app/middleware.php,取消 \think\middleware\SessionInit::class 的注释;否则验证码无法存取校验值。
前端展示与表单提交
模板中这样写:
- 图片:
<img src="%7B:url('index/captcha')%7D" onclick="this.src='{:url('index/captcha')}?'+Math.random()" title="点击刷新"> - 输入框:
<input type="text" name="captcha" placeholder="请输入验证码">
提交表单后,在接收 POST 的动作中校验:
- 用 captcha_check(input('post.captcha')) 即可
- 返回
true表示通过,false表示失败(无需手动读 session)
HTTPS 页面图片空白?在 config/captcha.php 中加一项:'url' => '/captcha/refresh',并确认 app.url_domain 配置为空或正确主域。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











