nuonuonuo 发表于 2019-3-14 18:38:30

多个控制器获取session的问题

本帖最后由 nuonuonuo 于 2019-3-14 18:42 编辑

各位好,我将登录信息通过CI的session库在一个控制器里存储了起来,当我想在其他控制器获取session数据来校验是否登录时,却获取不到数据。请问这是什么原因?
CI使用的版本是3.1.10

下面是登录逻辑控制器的代码

class Account extends CI_Controller
{
public function __construct()
{
    parent::__construct();
    // 加载模块
    $this->load->model('Account_model');
    $this->load->library('session');
}




/**
   * 登录逻辑
   */
public function login()
{
    $username = $this->input->post('username');
    $password = $this->input->post('password');

    // 执行模块里登录函数,返回用户信息的关联数组或false
    $query = $this->Account_model->login($username, $password);


    if ($query) {
      // 使用session类设置指定键值对
      $this->session->set_userdata($query);
      $res = [
      'code' => 200,
      'msg' => [
          'text' => "登录成功",
          'username' => $username,
          'level' => $query['level']
      ]
      ];
    } else {
      $res = [
      'code' => 204,
      'msg' => [
          'text' => "登录失败"
      ]
      ];
    }

    $this->_ajax_output($res);
}
}



下面是需要用的登录信息的控制器的代码

class Number_record extends CI_Controller
{
public function __construct()
{
    parent::__construct();
    // 加载模块
    $this->load->model('Number_record_model', 'NRM');
    $this->load->library('session');
}

/**
   * 添加号码
   */
public function add_num()
{
    $num = $this->input->post('num');

    if (!isset($_SESSION['username'])) {
      $res = [
      'code' => 101,
      // 我在这里试图获取session数据,但是只返回了"__ci_last_regenerate: 1552555932",我在上面添加的数据并没有存在里面。

      // 即使是使用$_SESSION也获取不了
      'msg' => $this->session->userdata()
      ];
    } else {
       // ....
    }
    $this->_ajax_output($res);
}
}

Skiy 发表于 2019-3-18 09:21:05

很早前听说官方的 session 功能不好用,所以有别人扩展了。我自己也没用官方的

superxgz 发表于 2019-3-18 19:29:45

$query = $this->Account_model->login($username, $password);
你这个login返回的是什么?

nuonuonuo 发表于 2019-3-19 16:43:11

本帖最后由 nuonuonuo 于 2019-3-19 16:44 编辑

superxgz 发表于 2019-3-18 19:29
$query = $this->Account_model->login($username, $password);
你这个login返回的是什么?
返回用户信息的关联数组或者false,就像这样:
{
'user' => "tony",
'level' => 1
}
页: [1]
查看完整版本: 多个控制器获取session的问题