2014-05-16 41 views
1

我需要使用perl設計一個購物車,這樣用戶可以清楚地知道他選擇購買的商品。我想將這些項目的數據保存在一個cookie中。但我想知道如何在每次添加項目時更新已經存在的cookie。有沒有更好的方法來設計購物車/結帳頁面。有沒有perl模塊讓我的工作更輕鬆?使用perl的購物車實現

這裏是我嘗試了更新的車cookie中的片段

$cooki = $q->cookie('CART'); #retrieve cookie CART if already exists into var $cooki 
$val2 = $cooki; 
$val1 = $picid; 
$cooki=$q->cookie(-name=>'CART', 
-value =>["$val1"," $val2"], 
-expires=>'+5m', 
-path=>'/'); 
print $q->header(-cookie=>$cooki); 

檢索:

$cooki = $q->cookie('CART'); 

但它僅存儲選擇像前'45%20 PIC的電流id '即45有一個空格,而不是像'45 12 16'這樣的多個值。我可以在哪裏出錯?

+0

我想你的代碼段和它的作品對我很好,請仔細檢查在變量的值。 – Pradeep

+0

我無法得到它。每次我添加一個項目或調用腳本時,cookie的值都是僅與該項目相關的id。 – navin

+1

在cookie中存儲除會話ID之外的任何內容都不是好主意。 –

回答

0

試試這個,因爲返回的是一個數組:

@cooki = $q->cookie('CART'); 
+0

返回的確是一個數組。我修改了它。但檢索顯示爲'25&0',即已經存在的cookie值被設置爲0或返回0。 – navin

0

使用CGI::Cookie並通過匿名陣列設置cookies

my $c = CGI::Cookie->new(-name => 'CART', 
          -value => ['45','12','16'], 

然後取現有的Cookie:

%cookies = CGI::Cookie->fetch; 
    $cart = $cookies{'CART'}->value;