我有一个购物车,我将其存储在cookie中。一旦将商品添加到购物车,就会设置cookie“ shopping_cart”。
function shopping_cart_add(){
if(isset($_COOKIE['shopping_cart'])){
$cookie_data = $_COOKIE['shopping_cart'];
$cart_data = json_decode($cookie_data, true);
}else{
$cart_data = array();
}
$data = array(
"cart_id" => 1,
"product_id" => $this->input->post('product_id'),
"product_name" => $this->input->post('product_name'),
"product_price" => $this->input->post('product_price'),
"quantity" => $this->input->post('quantity'),
"options" => $this->input->post('options'),
"description" => $this->input->post('description'),
"image" => $this->input->post('image')
);
$cart_data[] = $data;
$item_data = json_encode($cart_data);
setcookie('shopping_cart',$item_data,time() + (86400 * 30));
$_COOKIE['shopping_cart'] = $item_data;
}
我在用户要从购物车中删除商品时遇到问题。我使用的是codeigniter框架,但未使用其内置的cookie。
以下是我认为删除项目的代码:
<td><a href="<?php echo base_url('designs/delete/');?><?=$values['product_id'];?>" type="button" class="btn btn-default btn-sm">Delete</a></td>
以下是我的控制器中用于删除项目的代码:
function delete($delete_id){
$cookie_data = $_COOKIE['shopping_cart'];
$cart_data = json_decode($cookie_data, true);
foreach ($cart_data as $key => $value) {
if ($cart_data[$key]['product_id'] == $delete_id) {
unset($cart_data[$key]);
$item_data = json_encode($cart_data);
setcookie('shopping_cart',$item_data,time() + (86400 * 30));
header("location:/category/cart_summary.php?remove=1");
}
}
}
但是,当我单击删除按钮时,我仍然收到错误消息。
Undefined variable $_COOKIE['shopping_cart']
但是,当我检查浏览器时,它表明cookie存在。可能是什么问题呢??我已经检查了与该问题有关的堆栈上的类似问题,但没有任何帮助。 这包括: undefined index for cookie in some browsers PHP Undefined Index When Checking Cookie Value And Cookie Exists
答案 0 :(得分:0)
这可能是因为您没有明确提及shopping_cart
cookie的保存路径。尝试在每个setcookie
处添加第4个参数(路径):
setcookie('shopping_cart',$item_data,time() + (86400 * 30), '/');