在使用tp6自带的验证码遇到的坑,也去网上找了资料但是还是没能解决,自己通过另一种方式实现的,接下来就来讲一下不能显示captcha的方法
首先安装captcha验证码
代码语言:javascript复制composer require topthink/think-captcha
安装后会在vendortopthinkthink-captcha显示,同时在config目录下也有captcha.php
注意:安装完成验证码后需要在appmiddleware 中间键 将session初始化 去掉注释
代码语言:javascript复制// Session初始化
thinkmiddlewareSessionInit::class
前端调用tp6官方文档提供了两种
代码语言:javascript复制<div>{:captcha_img()}</div>
或
代码语言:javascript复制<div><img src="{:captcha_src()}" alt="captcha" /></div>
都可以,但是小编这两种都不能使用
接下来小编就讲如何解决这个·问题
首先在app下创建个目录能访问就行小编这里用的是controller目录
接下里就是路由,在router/app.php中创建路由
代码语言:javascript复制Route::get("verify","/home/verify");
接下来继续找到安装的captcha 在vendor/topthink/think-captcha/helper.php 找到captcha_img 方法只需要将 $src修改为如下
代码语言:javascript复制$src = '/home/verify';
然后返回到模板界面调用我们设置好的路由
代码语言:javascript复制<div><img src='/home/verify'/></div>
这里我们可以看到验证码可以调用了
问题解决!!!感谢大家观看
扩展
安装captcha后在config目录下也会有captcha配置文件,在里面可以自定义修改,如下图就是我用的配置样式
代码语言:javascript复制<?php
// ----------------------------------------------------------------------
// | Captcha配置文件
// ----------------------------------------------------------------------
return [
//验证码位数
'length' => 4,
// 验证码字符集合
'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
// 验证码过期时间
'expire' => 1800,
// 是否使用中文验证码
'useZh' => false,
// 是否使用算术验证码
'math' => false,
// 是否使用背景图
'useImgBg' => false,
//验证码字符大小
'fontSize' => 14,
// 是否使用混淆曲线
'useCurve' => true,
//是否添加杂点
'useNoise' => true,
// 验证码字体 不设置则随机
'fontttf' => '',
//背景颜色
'bg' => [243, 251, 254],
// 验证码图片高度
'imageH' => 0,
// 验证码图片宽度
'imageW' => 0,
// 添加自定义的验证码设置
'verify' => [
'length' => 3, // 验证码位数
'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
'expire' => 18000, // 验证码过期时间(s)
'useImgBg' => false, // 使用背景图片
'fontSize' => 18, // 验证码字体大小(px)
'useCurve' => false, // 是否画混淆曲线
'useNoise' => false, // 是否添加杂点
'useZh' => false, // 使用中文验证码
'fontttf' => '', // 验证码字体,不设置随机获取
'bg' => array(243, 251, 254), // 背景颜色
'reset' => true, // 验证成功后是否重置
],
];
欢迎大家一起学习!!共同进步!!