2012-12-14 75 views
3

我使用Codeigniter 2.1.0和CI_session進行會話處理。Codeigniter - 會話變量神祕消失

我以爲這

  1. 第一個設置在會話中使用$這 - >會話級> set_userdata()一些變量。
  2. 頁A重定向到網頁B
  3. 網頁B預計保留頁A.已設置的會話變量

然而這就是發生在我身上

  1. 頁A組會話中的一些變量使用$ this-> session-> set_userdata()。
  2. 頁A重定向到網頁B
  3. 網頁B的不保留A.頁中設置的

我有代碼頁A保存和記錄的$這個 - >內容的會話變量會話 - >用戶數據在重定向到頁面B之前的日誌中。日誌顯示在會話中設置的值存在。

但是,在頁面B上的$ this-> session-> userdata上使用var_dump()會顯示這些值不存在。

我真的不知道這可能是怎麼回事。我再次檢查了我沒有在頁面B中取消設置值。這就像CI_Session在某種程度上將它們置於幕後。

任何想法?

編輯:是的,我正在使用數據庫來保存會話數據。字段類型是TEXT。

+0

您是否將會話數據保存到數據庫中...如果不嘗試將會話數據保存到數據庫中......'$ config ['sess_use_database'] = TRUE;'...並檢查... – bipen

+0

是否發生在所有瀏覽器? –

+0

這是所有會話數據嗎?或只是其中的一部分?如果您的會話數據超出了Cookie限制的大小,則並非所有數據都會被傳遞。嘗試將它們保存到數據庫中,如果您尚未。 – Jeemusu

回答

1

根據我對網絡的理解,cookie和會話存儲在客戶機而不是服務器上。所以HTTP基本上將Cookie和會話添加到您的請求標頭併發送請求。

但在這種情況下,您正在設置會話,然後從服務器中的相同頁面重定向。普通的PHP可能會以不同的方式處理,但codeIgniter不使用本地PHP會話。 (請參考http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

這是我的猜測。但是如果我看看你的代碼,這將會很有幫助。