[英]Codeigniter Session library not storing array data
我在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);
}
我調試並成功地看到,如果我在$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();
}
任何幫助將不勝感激。
也許而且只有也許,您在會話中存儲了如此多的數據。 CI不使用本機PHP會話,而是使用cookie會話,這意味着如果您存儲大量數據,則cookie可能會很長,因此您的瀏覽器不會返回整個cookie,只是一部分。 這意味着,最后您將不會在服務器中接收到所有數據。
要解決此問題,請使用另一個使用本機PHP會話的庫重寫會話核心庫(您可以創建自己的MY_Session庫以避免混淆核心)。 我在我的項目中使用它: https : //bitbucket.org/xperez/core-session-storage-for-codeigniter並像魅力一樣工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.