未定义索引$ _COOKIE

时间:2018-12-28 14:24:55

标签: php codeigniter cookies

我有一个购物车,我将其存储在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

1 个答案:

答案 0 :(得分:0)

这可能是因为您没有明确提及shopping_cart cookie的保存路径。尝试在每个setcookie处添加第4个参数(路径):

setcookie('shopping_cart',$item_data,time() + (86400 * 30), '/');