打印session,输出null

来源:6-10 后台用户登录-数据更新和session处理

慕数据8150301

2020-08-11

想问问老师是什么问题?
非常感谢!
图片描述

1.开启中间件session

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

2.在admin文件夹下创建config文件夹,创建admin.php

<?php
return [
    'session_admin' => 'adminUser',
];

3.使用session用config文件夹中admin文件的进行存储

<?php
namespace app\admin\controller;

use app\BaseController;
use think\facade\View;
use app\common\model\mysql\AdminUser;
class Login extends BaseController {
    public function index() {
        return View::fetch();
    }

    public function md5() {
        // admin admin
        halt(session(config("admin.session_admin")));
//        echo md5("admin_singwa_abc");
    }

    public function check() {

        if (!$this->request->isPost()) {
            return show(config("status.error"), "请求方式错误");
        }
        // 参数检验 1、原生方式 2、TP6 验证机制
        $username = $this->request->param("username", "", "trim");
        $password = $this->request->param("password", "", "trim");
        $captcha = $this->request->param("captcha", "", "trim");

        if (empty($username) || empty($password) || empty($captcha)) {
            return show(config("status.error"), "参数不能为空");
        }
        // 需要校验验证码
        if (!captcha_check($captcha)) {
            // 验证码校验失败
            return show(config("status.error"), "验证码不正确");
        }

        try {
            $adminUserObj = new AdminUser();
            $adminUser = $adminUserObj->getAdminUserByUsername($username);

//        halt($adminUser);
            // 判断用户名是否存在
            if (empty($adminUser) || $adminUser->status != config("status.mysql.table_normal")) {
                return show(config("status.error"), "不存在该用户");
            }
            $adminUser = $adminUser->toArray();
            // 判断密码是否正确
            if ($adminUser['password'] != md5($password . "_singwa_abc")) {
                return show(config("status.error"), "密码错误");
            }
            // 需要记录信息到mysql表中
            $updateData = [
                "last_login_time" => time(),
                "last_login_ip" => $this->request->ip(),
                "update_time" => time(),
            ];
            $res = $adminUserObj->updateById($adminUser['id'], $updateData);
            if (empty($res)) return show(config("status.error"), "登陆失败");
        } catch(\Exception $e) {
            // todo 记录日志 $->getMessage();
            return show(config("status.error"), "内部异常,登陆失败");
        }
        // 记录session
        session(config("admin.session_admin"), $adminUser);

        return show(config("status.success"), "登陆成功");
    }
}

4.AdminUser.php

<?php

namespace app\common\model\mysql;

use think\Model;

class AdminUser extends Model {
    /**
     * 根据用户名获得后端表的数据
     * @param $username
     * @return array|bool|Model|null
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     */
    public function getAdminUserByUsername($username) {
        if (empty($username)) return false;
        return $this->where(["username" => trim($username)])->find();
    }

    /**
     * 根据主键ID更新数据表中的数据
     * @param $id
     * @param $data
     * @return bool
     */
    public function updateById($id, $data) {
        $id = intval($id);
        if (empty($id) || empty($data) || !is_array($data)) return false;
        return $this->where(["id" => $id])->save($data);
    }
}

5.登录成功后,访问md5方法,返回值为

^ null

6.php.ini
图片描述

  1. login.js

layui.use(['form'], function () {

    var form = layui.form,
        layer = layui.layer;
    // 登录过期的时候,跳出ifram框架
    if (top.location != self.location) top.location = self.location;
    // 进行登录操作
    form.on('submit(login)', function (data) {
        data = data.field;
        if (data.username == '') {
            layer.msg('用户名不能为空');
            return false;
        }
        if (data.password == '') {
            layer.msg('密码不能为空');
            return false;
        }


        if (data.captcha == '') {
            layer.msg('验证码不能为空');
            return false;
        }
        // 验证码 校验
        // var val = $(".input-val").val().toLowerCase();
        // var num = show_num.join("");
        // if(val != num){
        //     layer.msg('验证码错误!请重新输入!');
        //     draw(show_num);
        //     return false;
        // }

        // window.location = '../index.html';
        // return false;
        $(".input-val").val('');
        url = "/admin/login/check";
        $.ajax({
            url,
            data,
            type:"POST",
            success(res){
                if(res.status == 1){
                    layer.msg('登录成功', function () {
                        window.location = '/admin/index/index';
                    });
                } else {
                    layer.msg(res.message);
                    return false;
                }
            }
        })
        return false;
    });
});
$(function(){
    // location.href  =  "http://www.baidu.com";
    draw(show_num);
    $("#canvas").on('click',function(){
        draw(show_num);
    })
})
  1. index.php
namespace app\admin\controller;

use app\BaseController;
class Index extends BaseController {
    public function index() {
        echo "hello-admin";
    }

}
写回答

1回答

singwa

2020-08-16

亲爱的同学您好,关于这个问题您扣扣上和我沟通下哈。

0
0

全流程开发 TP6.0实战高并发电商服务系统

一课就能掌握TP6.0基础及运用,打造完整高并发的电商后端项目

1458 学习 · 1310 问题

查看课程