簡體   English   中英

使用PHP中的數組鍵刪除Cookie

[英]Delete cookie using array key in PHP

只想知道如何在PHP上刪除Cookie。 以下是$_COOKIES打印結果。 因此,我有一個購物車陣列,可以按照建議的方式存儲信息,在我的cart.php文件中,我有一個刪除議程或選項的按鈕。

Array
(
    [cart] => Array
        (
            [90406_cart] => Array
                (
                    [id_agenda] => 7
                    [qty_agenda] => 3
                    [options] => Array
                        (
                            [28962_option] => Array
                                (
                                    [id_option] => 3
                                    [qty_option] => 1
                                )
                            [52058_option] => Array
                                (
                                    [id_option] => 4
                                    [qty_option] => 1
                                )
                            [70617_option] => Array
                                (
                                    [id_option] => 5
                                    [qty_option] => 1
                                )
                        )
                )
            [86953_cart] => Array
                (
                    [id_agenda] => 17
                    [qty_agenda] => 1
                )
        )
)

問題是如何從父級刪除或取消設置此cookie,直到陣列的子級(假設我要刪除鍵為90406_cart52058_option議程)? Cookies是在Codeigniter上使用此腳本構建的

$id_agenda = 1;

$qty_agenda = 20;

$option = array(1,2,3);

$qty_option = array(3,3,3);

$num = rand(10000,99999).'_cart';

$this->input->set_cookie('cart['.$num.'][id_agenda]',$id_agenda, 86400); 
$this->input->set_cookie('cart['.$num.'][qty_agenda]',$qty_agenda, 86400); 
for($i = 0; $i<count($id_option);$i++){     
    $num2 = rand(10000,99999).'_option';
    $this->input->set_cookie('cart['.$num.'][options]['.$num2.'][id_option]',$id_option[$i], 86400);        
    $this->input->set_cookie('cart['.$num.'][options]['.$num2.'][qty_option]',$qty_option[$i], 86400);      
}

因此,在使用chrome瀏覽器中的Web開發工具進行了一些實驗之后,我才意識到Cookie的存儲位置如下:

cart[34705_cart][id_agenda] = 43
cart[34705_cart][qty_agenda] = 2
cart[34705_cart][options][12263_option][id_option] = 2
cart[34705_cart][options][12263_option][qty_option] = 4

這意味着它將每個數據存儲在一行中,然后PHP將其作為一個Array類型的變量全部讀取為一個Array ,實際上僅使用unset($_COOKIES['cart']['90406_cart'])$this->input->set_cookie('34705_cart') 我提出的解決方案是這樣的:

// delete all cookies for agenda and including any options on the agenda array
$array_key = '34705_cart';
$this->input->set_cookie('cart['.$array_key.'][id_agenda]'); 
$this->input->set_cookie('cart['.$array_key.'][qty_agenda]'); 
foreach($data[$array_key]['options'] as $key => $item){
    $this->input->set_cookie('cart['.$array_key.'][options]['.$key.'][id_option]'); 
    $this->input->set_cookie('cart['.$array_key.'][options]['.$key.'][qty_option]'); 
}

// delete option on the agenda
$array_key = '34705_cart';
$array_key2 = '12263_option';

$data = $this->input->cookie('cart');

$this->input->set_cookie('cart['.$array_key.'][options]['.$array_key2.'][id_option]');
$this->input->set_cookie('cart['.$array_key.'][options]['.$array_key2.'][qty_option]');
if(count($data[$array_key]['options'][$array_key2]) == 1){
    $this->input->set_cookie('cart['.$array_key.'][options]');
}

我希望這可以幫助可能在這種情況下翻滾的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM