2013-03-28 49 views
0

我已經看到了關於這個論壇 codeignitier車和問題很多問題只有改變配置文件codeignitier車只能容納10個項目甚至存儲

,但我仍然面對這個問題解決了數據庫中的會話

我有改變這樣

$config['sess_cookie_name']  = 'ci_session'; 
$config['sess_expiration']   = 7200; 
$config['sess_expire_on_close'] = FALSE; 
$config['sess_encrypt_cookie']  = FALSE; 
$config['sess_use_database']  = TRUE; 
$config['sess_table_name']   = 'ci_sessions'; 
$config['sess_match_ip']   = FALSE; 
$config['sess_match_useragent'] = TRUE; 
$config['sess_time_to_update']  = 600; 

,並在數據庫中,ci_sessions表,USER_DATA列,該項目可以儲存配置文件10餘項

s:11:"total_items";i:12;s:10:"cart_total";i:420000;}} 

並顯示,當我使用Firebug檢查車項目

foreach ($this->cart->contents() as $items): ?>{ 
    echo $items['id']; 
    echo $items['image']; 
    .... 
} 

的代碼,我仍然有大約超限餅乾大小

錯誤還有什麼我應該檢查固定我的問題? ?

+1

我不明白這個問題。你是否在某個地方得到了一個實際的錯誤,或者你的代碼是在做一些你並不期望的事情,或者是什麼? –

+0

它顯示在螢火蟲錯誤,每次我提出要求顯示購物車項目和錯誤信息是關於cookie超限.. – lemone

回答

0

由於默認情況下,CodeIgniter使用會話cookie來存儲會話數據,所以您被最大的cookie長度所擊中。 Cookie可以保存每個域的約4093條再見數據(所以如果你有2個cookie,它們的總和大小不能超過)。

如果您將CI用於會話存儲的數據庫(就像您現在這樣做),那麼應該減小cookie的大小。 CI只會將session metadata in the cooke和userdata放入數據庫中。檢查你的CI版本,也許你是過時的版本。

或者,您可以查看會話庫替換,如NativeSession,此代碼將模仿相同的API,但使用php的內置會話功能,因此您也可以輕鬆使用文件或memcached備份存儲。

+0

我試圖使用不同的版本..但它仍然是相同的..購物車項目商店在數據庫正確,但只有10項,當我存儲第11項,所有項目(在數據庫中)被替換這個第11項.. – lemone

+0

@lemone,這個替換行爲聽起來真的很奇怪,我認爲這可能做到你的應用程序代碼,而不是庫。嘗試禁用會話加密,以便您可以查看會話cookie內的內容。啓用'sess_use_database'後,您應該只看到如下內容:'a:4:{s:10:「session_id」; s:32:「...」; s:10:「ip_address」; s:9: 「...」; s:10:「user_agent」; s:7:「Firefox」; s:13:「last_activity」; i:...;} ec61fc3e45cb86d20a7c2dd1680e998b'在你的問題中''total_items「; i: 12'說購物車中有12個元素。也許你正在添加重複ID的項目? – complex857