我对CodeIgniter的购物车类有一种非常奇怪的行为。我在我的数据库中设置了ci_session表,并且已经将sess_use_database更改为TRUE。
当我向购物车添加商品时,一切都很好:我看到我的总物品柜台上升了一切。当我第一次看到我的所有物品到他的购物车页面时,他们应该在哪里。我还提供了删除项目按钮和空购物车按钮。奇怪的事情发生在这里:当我点击删除一个项目,页面刷新(由于我认为重定向),但项目仍然存在!然后,如果我手动刷新购物车的页面,我看到我删除的相同项目消失。就像,当我使用重定向时,我得到了页面的缓存,而不是带有新信息的实际页面。
无论如何,这里有一些链接:
尝试从此页面添加一些项目: http://www.pantanishoes.it/Niko/index.php/store/linea/urban 单击每个项目描述底部的大黑色按钮。
然后尝试在顶部的菜单上转到Carrello并尝试删除一些项目或Svuota(它做一个简单的destroy())并看看会发生什么!任何帮助将不胜感激!谢谢你的建议!
以下是购物车的一些代码。
function add() {
$item = $this->store_model->get_item($this->input->post('id'));
$data = array(
'id' => $this->input->post('id'),
'name' => $item->modello,
'qty' => $this->input->post('qty'),
'price' => $item->prezzo,
'options' => array(
'taglia' => $this->input->post('taglia'),
'linea' => $item->linea,
'modello' => $item->modello,
'foto' => $item->foto1
)
);
$this->cart->insert($data);
$linea = str_replace(' ', '-', $item->linea);
redirect('/store/linea/' . $linea . '/', 'location');
}
function remove() {
$rowid = $this->uri->segment(3);
$data = array(
'rowid' => $rowid,
'qty' => 0
);
$this->cart->update($data);
redirect('cart');
}
function destroy() {
$this->cart->destroy();
redirect('cart');
}
在localhost上一切都很棒!当我将网站加载到服务器时,它开始出现这个问题。真的很奇怪!是否有一些我缺少的配置?
Chrome说: 请求网址:http://www.pantanishoes.it/Niko/index.php/cart/remove/fb1b4a9869de6f24aa620e2307192d93 请求方法:GET 状态代码:302暂时移动(从缓存中)
答案 0 :(得分:1)
好的伙计们。所以我终于修复了这个小虫子,感谢我的一位朋友的帮助,他曾使用CI一段时间。正如你们中的一些人猜测的那样,这是一个缓存问题。您唯一需要做的就是强制PHP标头如下:
header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );
您可以在控制器中执行私有功能,以便无法从外部访问它并在相对的添加,删除,销毁方法中调用它。私有函数必须如下所示:
private function _set_headers() {
header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i(worry)' ) . ' GMT' );
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );
}
你可以在其他函数中调用它:
$this->_set_headers();
请记住,这只适用于班级的范围。您无法在其他控制器中调用此函数,也无法从范围外访问该函数,因为它不公开。
谢谢大家!!
答案 1 :(得分:0)
我建议你试试这个:
redirect('/store/linea/' . $linea . '/', 'refresh');
而不是
redirect('/store/linea/' . $linea . '/', 'location');
在重定向
之后,您的页面似乎仍然被缓存Spero che funzioni