Codeigniter会话库不存储数组数据

时间:2014-08-30 06:01:24

标签: php codeigniter session

我在model中运行几个查询来验证用户是否有效然后存储某些数据。我能够存储一个查询的数据,但无法保存为其他查询。这是我在login controller

中的代码

控制器

if ($user['authenticated']) {

                //Start session
                $this->load->library('session');

                $newdata = array(
                    'user'  => $user['data'],
                    'userPermissions'=>$user['permissions'],
                    'authenticated' => true,
                    'logged_in' => TRUE
                );


                $this->session->set_userdata($newdata);

                }

如果我在user sessions上方打印,我已经调试并成功查看所有数组数据都在$this->session->set_userdata($newdata);。之后,我不确定为什么session function无法保存所有数据,因为我无法检索其他页面中的userPermissions数据。但是,所有其他数据即将到来。这是库中的session function代码

图书馆会议

function set_userdata($newdata = array(), $newval = '')
    {
        if (is_string($newdata))
        {
            $newdata = array($newdata => $newval);
        }

        if (count($newdata) > 0)
        {
            foreach ($newdata as $key => $val)
            {
                $this->userdata[$key] = $val;
            }
        }

        $this->sess_write();
    }

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

也许,也许只是,你在会话中存储了这么多数据。 CI不使用本机PHP会话而是cookie会话,这意味着如果您存储了这么多数据,那么您的cookie可能会很长,因此您的浏览器不会返回整个cookie,只是一部分。这意味着,最后您将不会在服务器中收到所有数据。

要解决此问题,请覆盖会话核心库(您可以创建自己的MY_Session库以避免将核心搞乱)与另一个使用本机PHP会话的库。我在我的项目中使用它:https://bitbucket.org/xperez/core-session-storage-for-codeigniter并且像魅力一样工作。