我正在尝试使用codeigniter会话在ajax调用之间存储状态。 在我使用
设置会话的其中一个网址中$this->session->set_userdata("user", "harry");
但是当我试图从另一个网址访问“user”值时,我得到了错误
$this->session->userdata("user");
返回false。
我在这里做错了什么?我知道会话是在第一个URL中设置的,因为我可以在此之后立即回显该值。
答案 0 :(得分:0)
会话通常会在每个页面加载时全局运行,因此 必须在控制器中初始化会话类 构造函数,或者它可以由系统自动加载
如果您没有自动加载会话库,请在其他控制器将继承的自定义控制器中初始化它,例如MY_Controller。您需要在每个Controllers __construct()中加载Session库。
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;
}
}