我在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();
}
任何帮助将不胜感激。
答案 0 :(得分:0)
也许,也许只是,你在会话中存储了这么多数据。 CI不使用本机PHP会话而是cookie会话,这意味着如果您存储了这么多数据,那么您的cookie可能会很长,因此您的浏览器不会返回整个cookie,只是一部分。这意味着,最后您将不会在服务器中收到所有数据。
要解决此问题,请覆盖会话核心库(您可以创建自己的MY_Session库以避免将核心搞乱)与另一个使用本机PHP会话的库。我在我的项目中使用它:https://bitbucket.org/xperez/core-session-storage-for-codeigniter并且像魅力一样工作。