用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2121|回复: 3
收起左侧

[Session/Cookie] 多个控制器获取session的问题

[复制链接]
发表于 2019-3-14 18:38:30 | 显示全部楼层 |阅读模式
本帖最后由 nuonuonuo 于 2019-3-14 18:42 编辑

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

下面是登录逻辑控制器的代码
PHP复制代码
 
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);
  }
}
 
复制代码



下面是需要用的登录信息的控制器的代码
PHP复制代码
 
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);
  }
}
 
复制代码

发表于 2019-3-18 09:21:05 | 显示全部楼层
很早前听说官方的 session 功能不好用,所以有别人扩展了。我自己也没用官方的
发表于 2019-3-18 19:29:45 | 显示全部楼层
$query = $this->Account_model->login($username, $password);  
你这个login返回的是什么?
 楼主| 发表于 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
}

本版积分规则