ThinkPHP6:验证码
Posted 时光-ing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP6:验证码相关的知识,希望对你有一定的参考价值。
问题描述: 缺少验证码
解决:
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();
}
}
}
以上是关于ThinkPHP6:验证码的主要内容,如果未能解决你的问题,请参考以下文章