我是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;
?>