Codeignitier购物车只容纳10个条目,甚至将会话存储在数据库中


codeignitier cart only hold 10 items even store the session in database

我在这个论坛上看到了很多关于codeigntier 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时,我仍然得到一个关于cookie大小限制的错误

还有什么我应该检查来解决我的问题??

您遇到了最大cookie长度的问题,因为CodeIgniter默认情况下使用会话cookie来存储会话数据。cookie每个域可以容纳4093个字节数据(所以如果你有2个cookie,它们的总和不能超过这个值)。

如果你让CI使用数据库存储会话(就像你现在做的),那么应该减少cookie的大小。CI将只把会话元数据放到cook中,而把用户数据放到数据库中。检查您的CI版本,也许您使用的是过时的版本。

或者你可以检查会话库替代品,如NativeSession,这段代码将模仿相同的API,但使用php的内置会话功能,所以你可以很容易地使用文件或memcached备份存储。