tp6框架验证码-----captcha

2021-09-08 10:24:57 浏览数 (1)

在使用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,           // 验证成功后是否重置
    ],
];

欢迎大家一起学习!!共同进步!!

0 人点赞