我正在尝试使用代码点火器会话来存储ajax调用之间的状态。在其中一个url中,我正在使用设置会话
$this->session->set_userdata("user", "harry");
但是当我试图从另一个url访问值"user"时,我得到了错误的
$this->session->userdata("user");
返回false。
我在这里做错了什么?我知道会话是在第一个URL中设置的,因为我可以在那之后立即回显该值。
会话通常会在每次页面加载时全局运行,因此会话类必须在控制器中初始化构造函数,或者可以由系统自动加载
如果您没有自动加载会话库,请在其他控制器将继承的自定义控制器(如MY_Controller)中对其进行初始化。否则,您需要在每个控制器__construct()中加载会话库。
class MY_Controller extends CI_Controller
{
public $currentUser = NULL;
public function __construct()
{
if(is_null($this->currentUser))
$this->_checkUserHasLoggedIn();
}
protected function _checkUserHasLoggedIn()
{
// $this->session->set_userdata(array('uid'=>'0'))
// This would only be set if a user is logged In
// via a Authentication library
if($this->session->userdata('uid') && $this->session->userdata('uid') !== 0)
{
$this->currentUser = new StdClass();
$this->currentUser->ID = $this->session->userdata('uid');
$this->currentUser->Group = $this->session->userdata('group');
$this->currentUser->Name= $this->session->userdata('name');
}
return;
}
}