tp6实现商城后台登录功能

后台登录逻辑

1、没有登录状态,访问后台页面都应该跳转到登录页
已经登录状态:
1、访问登录页面,应该跳转到后台首页

解决方案:
后台登录拦截:
1、传统common/base.php控制器,后台控制器都去继承base父类,在base控制器中做登录拦截
2、后台应用中间件(这里多应用,不做全局中间件)的前置操作校验做登录拦截

后台登录功能实现-01

1、开启验证验证码

2、后台校验提交数据
1)是否为post提交
2)验证码是否正确(需要开启全局中间件的session)
3)验证用户名为条件查询是否存在数据库
4)验证用户状态status是否为激活状态
5)密码校验采用加密盐+md5方式加密验证是否正确
6)保存用户信息到session中实现多页面登录状态与展示用户信息
7)更新该用户的登录时间
8)验证成功跳转到后台首页
9)登录后再次访问登录页根据session值重定向到后台首页

后台管理员表结构
CREATE TABLE `qing_admin` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  `password` char(32) COLLATE utf8_unicode_ci NOT NULL,
  `last_login_time` int(11) NOT NULL,
  `group_id` int(2) NOT NULL,
  `status` int(11) NOT NULL DEFAULT '1' COMMENT '1启用0禁用',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='后台管理员';
实现代码
public function index()
    {
    	//9)登录后再次访问登录页根据session值重定向到后台首页
    	if(session('adminSessionData')){
            return redirect('/qingadmin/index');
        }
        
        if (request()->isPost()) {
            $data = input('post.');
            //验证码校验
            if (!captcha_check($data['verifycode'])) {
                return alert('验证码错误', 'index', 5);
            };
            //验证码用户名
            $adminData = Db::name('admin')->where('user_name', $data['username'])->find();
            if (!$adminData) {
                return alert('用户名错误', 'index', 5);
            }
            //如果管理员有状态,status=1合法  0禁止
            if ($adminData['status'] == 0) {
                return alert('您的账号被禁止登录', 'index', 5);
            }

            //密码校验
            $salt = 'zxcvbn';
            if ($adminData['password'] != md5($salt . $data['password'])) {
                return alert('密码错误', 'index', 5);
            }

            Db::name('admin')->where('id', $adminData['id'])->update(['last_login_time' => time()]);
            session('adminSessionData', $adminData);

            return alert('登录成功', '/qingadmin/index/index', 6);
        } else {
            return view();
        }
    }

后台登录退出-02

登录退出功能:
1、清空键名为adminSessionData的用户信息
2、tp方法redirect()重定向回到登录页面

实现代码
 public function logout(){
        session('adminSessionData',null);
        return redirect('/qingadmin/login/index');
    }

前置后台应用中间件-03

1、判断用户信息session(‘adminSessionData’)获取不到,并且不是login登录提交的数据,则重定向到登录页
2、需要注意的是登录页是没有校验用户登录session信息,在加入判断是login登录页不进行重定向,防止多次重定向问题

使用

定义中间件,并将middleware/Check.php与middleware,php文件移动至后台qingadmin文件夹下

php think make:middleware Check

Check.php判断逻辑实现代码

<?php
declare (strict_types = 1);

namespace app\qingadmin\middleware;

class Check
{
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    //前置中间件
    public function handle($request, \Closure $next)
    {
        if(empty(session('adminSessionData')) && !preg_match('/login/',$request->pathinfo())){
            return redirect((string) url('login/index'));
        }
        return $next($request);
    }
}

middleware.php使用中间判断逻辑

<?php
// 后台应用中间件定义文件
return [
    // 全局请求缓存
    // \think\middleware\CheckRequestCache::class,
    // 多语言加载
    // \think\middleware\LoadLangPack::class,
    // Session初始化
     \think\middleware\SessionInit::class,
     \app\qingadmin\middleware\Check::class,
];

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
DSmall多商户开源商城源码是一个以thinkPHP为框架进行开发的多用户商城系统源码。网站功能包含:网站设置、帐号同步、上传设置、权限设置、地区管理、数据备份、操作日志、分类管理、品牌管理、店铺等级、店铺分类、店铺帮助、会员管理、会员级别、积分管理、预存款、实物订单、虚拟订单、退货管理、咨询管理、评价管理、文章分类、文章管理、抢购管理、限时折扣、满即送、手机端拼团、会员等级折扣、优惠套餐、推荐展位、活动管理、兑换礼品、行业分析、店铺统计、商品分析、营销分析等 安装须知: 请将public目录设置为根目录后,直接访问即可进行安装 环境要求: PHP5.4以上版本(注意:PHP5.4dev版本和PHP6均不支持) DSmall多商户开源商城源码 更新日志: 2018年8月3日更新 1.新增会员等级折扣功能 2.新增后台自定义自动收货时间 3.评价管理分页修复 4.用户登录注册验证码修复。 5.手机用户中心界面优化 2018年8月21日更新 1.优化会员等级折扣功能 2.优化后台统计功能 3.优化后台的界面显示 4.优化手机端及语言包 2018年9月17日更新 1.新增双语语言切换 2.分销功能强化,新增分销商品管理,分销员管理,分销等级管理。 3.手机端功能以及界面优化 2018年10月9日更新 1. 优化缓存浏览记录 2. 优化分销佣金分拥 3. 修复微信自动登录参数 4. 修复双语切换BUG 2018年11月12日更新 1. 修复微信自动登录没有unionid时需要中断 2. 修复苹果手机小程序支付的小BUG 3. 修复语言包BUG 4. 修复SNS显示错位 5. 去除初始化数据的多余图片 6. 后台界面优化
8tupian图片加密平台采用 php+mysql 的环境,php版本是php5.6。 源码是通过调用八图片平台的API,进行设计开发的。用此源码搭建的网站,用户资金直接进入你自己的支付接口。 8tupian图片加密平台简介: 8tupian图片加密平台是一个可以对图片进行加密的网络平台。 将原始图片上传,就可以生成一张加密的网络图片。 这张网络图片可以发布到网站,论坛,公众号,QQ群等网上的任何角落。 另外,扫码支付后,还可以设置成跳转到一个指定网页(URL地址)。支付金额可以自行设置。获得的总收入存储在您的平台账户中,可以提现。 另外,扫码支付后,还可以跳转到一个指定网页(URL地址)。  源码说明: 8tupian图片加密平台包含三种模式上传图片。支付接口支持对接微信jsapi,支付宝当面付,码支付,xorpay支付等,个人也可以对接。8tupian图片加密平台是一个独立的网站,你需要独立运营,独立审核图片,独立给商户结算。可在此源码的基础上进行二次开发,修改等。 文件目录说明: 8tp/  个人中心的所有页面(其中,8tp/config.php可以修改客服QQ,邮箱等) admin/  管理员的后台管理页面 (建议修改此文件夹名称) data/  上传的图片存储在这个目录(管理员可对此文件夹中的图片进行查看,审核等) p.php  网页地址的文件 pay.php  支付地址的文件 index.html 前端展示页面(此页面可替换) 源码内有配置说明文档,可以参照阅读。 8tupian图片加密平台 v2.2 更新说明: 1.支持将源码放到网站子目录 2.增加下线推广功能 3.页面自适应,支持手机端浏览 8tupian图片加密平台 v2.4 更新说明: 1.修复了有些主机打不开登录页面的bug 2.增加了对很多其他支付平台的接口支持, 8tupian图片加密平台 v2.5 更新说明: 1.增加了支持bufpay接口的对接源码 2.增加了对于网站搭建过程的视频讲解 3.修复了对于https的网站上传图片后无法显示的问题 8tupian图片加密平台 v3.0 更新说明: 1.增加对静态图片的支持 2.支付宝当面付接口,增加支付后手机端自动跳转的功能。 8tupian图片加密平台 v3.1 更新说明: 1.后台管理增加搜索用户的功能,将分页显示出所有已注册的用户 2.管理页面修改了图标,更加美观

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值