【问题标题】:CodeIgniter SessionProblemCodeIgniter 会话问题
【发布时间】: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


【解决方案1】:

您应该注意,您不能在设置会话数据的同一页面中访问会话数据。如果没有数据库条目,请检查您的数据库结构并仔细阅读this page。希望它能解决你的问题。

【讨论】:

    猜你喜欢
    • 2012-02-10
    • 2012-07-14
    • 1970-01-01
    • 2011-10-08
    • 2020-06-23
    相关资源
    最近更新 更多