CodeIgniter:重定向后购物车内容丢失

时间:2013-08-26 21:55:57

标签: php codeigniter session shopping-cart

我正在尝试使用CodeIgniter开发一个小型网上商店。要存储项目,我使用Cart库。大多数时候,一切都很好。但是,有时重定向后购物车的内容会丢失。

我在网上找到了一些修复程序,但在我的案例中没有一个可行。这是我的设置:

  • 我使用数据库存储会话
  • 我不使用AJAX
  • 会话Cookie名称中没有下划线

以下是刷新示例:

public function add_item() {
    $item_id = $this->input->post('item');

    // Query database
    $item = $this->model->find_item($item_id);

    // Rewrite model info
    ...

    $data = array(
        'id'      => 'item-' . $item['id'] . '-size-' . $item['sizes'][$i]['id'],
        'qty'     => $qty,
        'price'   => $item['sizes'][$i]['price'],
        'name'    => $item['name'],
        'options' => array('short_name' => $item['short_name'])
    );

    $this->cart->insert($data);

    usleep(10000);
    redirect('shop');
}

1 个答案:

答案 0 :(得分:1)

由于这个问题,我终于找到了问题的答案:CodeIgniter Cart and Session lost when refresh page

问题在于会话中存储的数据太大了。 CodeIgniter将所有数据存储在cookie中,限制为4kB。我的错误是认为,如果我使用数据库存储我的会话,我可以避免这个限制。 Apparently,CodeIgniter出于安全原因“仅”保存数据库中的会话。 cookie中仍然有很多数据。

现在,我使用一个名为Native session的库。我在这里找到了它:https://github.com/EllisLab/CodeIgniter/wiki/Native-session

我只是将文件放在'application / libraries'中,将第一个函数重命名为'__construct()',将其添加到autoimport并在我的代码中用'native_session'替换所有'session'标签。我还必须更改Cart类,因为它使用的是CodeIgniter的原始会话。