我有一个购物篮cookie,在将产品添加到购物篮之前,该功能会检查是否存在cookie或是否需要新的cookie。这在一次添加一个项目时工作正常,但有时同时添加多个项目。如果旧的篮子饼干存在,这可以正常工作。问题是当没有篮子cookie并且函数必须创建一个。
第一次通过时,会创建cookie,并添加数据库记录等。
我们第二次检查功能,检查cookie没有找到cookie,另外创建了cookie等等。
$this->db->select('basket_id');
$this->db->from($this->basket_table);
$this->db->where('basket_id', get_cookie('basket_id'));
$check_basket = $this->db->get();
if($check_basket->num_rows > 0){
$basket_exists = 1;
}else{
$basket_exists = 0;
}
if($basket_exists == 0){
delete_cookie('basket_id');
$basket = array(
'lang_id' => $lang_id,
'currency_id' => $currency_id,
'customer_id' => $customer_id,
);
$this->db->insert($this->basket_table, $basket);
$basket_id = $this->db->insert_id();;
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => 60*60*24*30,
'domain' => 'REMOVED'
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
}else{
$basket_id = get_cookie('basket_id');
}
答案 0 :(得分:1)
为了设置cookie,你需要将它发送到浏览器,但是如果你的函数在创建视图之前多次循环,这种情况就不会发生。
所以在使用购物篮之前设置cookie,或者只检查cookie是否需要设置一次,如下所示:
$this->db->select('basket_id');
$this->db->from($this->basket_table);
$this->db->where('basket_id', get_cookie('basket_id'));
$check_basket = $this->db->get();
if($check_basket->num_rows > 0) {
$basket = array(
'lang_id' => $lang_id,
'currency_id' => $currency_id,
'customer_id' => $customer_id,
);
$this->db->insert($this->basket_table, $basket);
$basket_id = $this->db->insert_id();
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => 60*60*24*30,
'domain' => 'REMOVED'
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
}
// Now run your basket logic here - knowing the cookie is setup
}