codeigniter购物车只保存10个项目,甚至将会话存储在数据库中

时间:2013-03-28 22:05:04

标签: php javascript codeigniter jquery cart

我在这个论坛上看到过很多关于codeignitier cart的问题 并且只有更改配置文件

才能解决问题

但我仍面临这个问题

我已经像这样更改了配置文件

$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;}}

以及显示购物车项目的代码

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

当我用firebug检查时,我仍然收到有关超限饼干大小的错误

还有什么我应该检查来修复我的问题吗?

1 个答案:

答案 0 :(得分:0)

您遇到了最大cookie长度,因为CodeIgniter默认使用会话cookie来存储会话数据。 Cookies每个域可以容纳大约4093个bye数据(所以如果你有2个cookie,那么总和大小不能超过那个)。

如果您使CI使用数据库进行会话存储(就像您现在那样),那么应该减少cookie大小。 CI只会将session metadata in the cooke和userdata放入数据库。检查您的CI版本,也许您使用的是过时的版本。

或者您可以查看会话库替换,如NativeSession,此代码将模仿相同的API但使用php的内置会话功能,因此您也可以轻松使用文件或memcached支持的存储。