ThinkPHP6.0验证码

问题描述: 缺少验证码请添加图片描述

解决:
1、首先使用 Composer 安装 think-captcha 扩展包:

composer require topthink/think-captcha

请添加图片描述
(注:验证码库需要开启Session才能生效。)

2、配置: 在config下的captcha中。

<?php
// +----------------------------------------------------------------------
// | Captcha配置文件
// +----------------------------------------------------------------------

return [
    //验证码位数
    'length'   => 5,
    // 验证码字符集合
    'codeSet'  => '23456789abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
    // 验证码过期时间
    'expire'   => 1800,
    // 是否使用中文验证码
    'useZh'    => false,
    // 是否使用算术验证码
    'math'     => false,
    // 是否使用背景图
    'useImgBg' => false,
    //验证码字符大小
    'fontSize' => 25,
    // 是否使用混淆曲线
    'useCurve' => true,
    //是否添加杂点
    'useNoise' => true,
    // 验证码字体 不设置则随机
    'fontttf'  => '',
    //背景颜色
    'bg'       => [243, 251, 254],
    // 验证码图片高度
    'imageH'   => 0,
    // 验证码图片宽度
    'imageW'   => 0,

    // 添加额外的验证码设置
    // verify => [
    //     'length'=>4,
    //    ...
    //],
];

请添加图片描述
3、(middleware.php)启动session,因为验证码信息是以缓存形式存储在session中的
请添加图片描述

4、(前)模板中的两种表示

<div>{:captcha_img()}</div>
<div><img src="{:captcha_src()}" alt="captcha" /></div>

上面两种的最终效果是一样的,根据需要调用即可。

5、(后)Login控制器

<?php
namespace app\dongadmin\controller;
use think\facade\Db;
use app\BaseController;
class Login extends  BaseController
{
    //后台登录的逻辑
	public function index()
    {
        //已登录直接跳转
        $account = session('adminAccount');
        if($account && $account['id']) {
            return redirect(url('index/index'));
        }
        if(request()->isPost()) {
            $data = input('post.');
            //halt($data);
            // 通过用户名 获取 用户相关信息
            $adminData = Db::name('admin')->where('username',$data['username'])->find();//一维数组
            if(!$adminData || $adminData['status'] !=1 ) {
                //dump(111111);die;
                return alert('用户不存在,或者此用户未被审核通过','/dongadmin/login',5,3);
            }
            if(!captcha_check($data['verifycode'])) {
                //dump(222222);die;
                // 校验失败
                return alert('验证码不正确','/dongadmin/login',5,3);
            }
            if($adminData['password'] !=password_salt($data['password'])) {
                //dump(333333);die;
                return alert('密码不正确','/dongadmin/login',5,3);
            }
            //dump(444444);die;
            session('adminAccount', $adminData);
            return alert('登录成功!','/dongadmin/index/index',6,3);
        }else {
            return view();
        }
    }
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/blbyu/article/details/119652169