请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

session返回null

图片描述

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

正在回答 回答被采纳积分+3

2回答

提问者 慕数据8150301 2020-08-11 09:13:18

https://img1.sycdn.imooc.com//szimg/5f31f06e09509c6908300549.jpg


php.ini文件下session.save_path~

0 回复 有任何疑惑可以回复我~
野生码农在线co腚 2020-06-11 14:20:57

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

0 回复 有任何疑惑可以回复我~
  • 提问者 慕数据8150301 #1
    您好!找到php.ini文件下的session.save_path之后,该怎么办呢?是path不正确才打印不出session吗?
    您说等会打开看看存里面没有,请问打开什么文件呢?
    上面回答里我新上传了php配置文件~
    回复 有任何疑惑可以回复我~ 2020-08-11 09:08:35
  • 注释打开啊,然后重启
    回复 有任何疑惑可以回复我~ 2020-08-13 01:23:04
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信