会话不保存自定义userdata


Session doesn't hold custom userdata

我是CodeIgniter的新手,我开始使用会话库。

我已经自动加载了会话库,并试图将当前user_id保存到会话userdata数组。但是当我试图在另一页上阅读它时,信息不见了。

本机PHP会话工作得很好(测试过了),所以它一定是来自CI的东西。

我编写了一个简单的测试页面,其中测试了以下内容:

  • 设置会话userdata。
  • 测试页面正确显示用户数据
  • 取消控制器代码中set session数据线的注释,重新加载页面。
  • 测试页面没有显示用户数据。

控制器代码:

class Welcome extends CI_Controller {
   public function index(){ 
        $data = null;
        $data['test'] = "Yeeeeh!!";
        $this->session->set_userdata($data);
        $this->load->view('welcome_message', $data);
    }
}

视图的代码:

<?php
    echo $this->session->userdata('test');
?>

为什么视图显示session_id而不是您创建的"test"变量?

你测试了吗

<?php
echo $this->session->userdata('test');

?>

在视图文件?

CI的会话是cookie,而不是PHP本地会话。在视图中调用会话是有效的(IIRC),但由于视图是在创建会话的同一个请求中加载的,因此不会设置会话。

你需要在另一个请求(即另一个控制器)上调用它,或者在其他地方设置会话(在另一个控制器中,通过AJAX也可以工作),或者使用本地PHP $_SESSION数组代替。

我认为你的实际代码只是一个测试用例,否则为什么不直接

public function index(){ 
        $data = null;
        $data['test'] = "Yeeeeh!!";
        $this->session->set_userdata($data);
        $this->load->view('welcome_message', $data);
    }
在视图:

<?php
  echo $test;
?>