session返回null

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

慕数据8150301

2020-06-09

图片描述

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
写回答

2回答

慕数据8150301

提问者

2020-08-11

//img.mukewang.com/szimg/5f31f06e09509c6908300549.jpg


php.ini文件下session.save_path~

0
0

野生码农在线co腚

2020-06-11

找到php的配置文件.php.ini  搜索 session.save_path 看保存到哪了,等会后打开 看看存里面没有

0
2
野生码农在线co腚
回复
慕数据8150301
注释打开啊,然后重启
2020-08-13
共2条回复

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

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

1448 学习 · 1308 问题

查看课程