【发布时间】:2011-10-01 13:56:15
【问题描述】:
我使用 CodeIgniter 并将 Sessions 保存在我的数据库中。
如果用户尝试登录并且登录成功(在db中找到他的数据),将执行以下代码行:
$this -> session -> set_userdata($account_data); /login-page
在此之后,我将用户重定向到我的仪表板。仪表板现在尝试从会话中读取 $account_data。 但是
$this -> session -> all_userdata(); /dashboard
仅从 codeigniter 输出标准会话内容。 我在 set_userdata 调用(上图)并加载了数组之后检查了会话。但是这个会话没有 db-entry。 好的,我调用 all_userdata();在仪表板中 - 它显示了会话的标准内容,并且数据保存在我的数据库中。
总结:
LoginPage - 加载一些 Accountdata 并将其保存在 Session 中。我可以从此会话加载 Accountdata。没有数据库入口
仪表板 - 会话仅包含 codeigniters 会话的标准内容。具有此数据的 DB-Entry 存在。
只有在 LoginPage 的开头我才销毁会话。
我有点困惑,似乎会话没有“传输”到下一个站点。
有什么建议吗?
编辑:测试用例
public function testSessionStart(){
if ($this->session->userdata('key')){
}else{
$this->session->sess_destroy();
}
$this->session->set_userdata('key','12345566');
debug($this->session->all_userdata());
debug($this->session->userdata('session_id'));
echo "<br><a href='".base_url()."login/testSessionEnd'>Klick me</a>";
}
public function testSessionEnd(){
$this->session->set_userdata('sid','hasd12312kasdj89d');
debug($this->session->all_userdata());
debug($this->session->userdata('session_id'));
}
如果调用 Start 函数,则 db 永远不会获得条目。 End func 生成一个新的 Session 并将其保存到数据库中。 我不知道为什么
【问题讨论】:
-
尝试删除 $this->session->sess_destroy();
标签: database session codeigniter