簡體   English   中英

Codeigniter會話庫未存儲數組數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM