2012-02-08 52 views
1

我正在用PHP編寫一個簡單的購物車,但我不太清楚應該如何存儲用戶選擇購買的物品。我應該使用Cookie嗎?當然,如果我確實使用了cookie,那麼我將存儲在cookie中的就是商品SKU和數量。我不會將價格存儲在cookie中,因爲用戶可能會更改它們。我應該如何儲存購物車物品?

感謝您的諮詢!

+0

查看答案在這裏瞭解如何將它們存儲在'$ _SESSION' http://stackoverflow.com/questions/建議7610890/is-it-it-it-un-a-session-variable-with-a-specific-and-variable-index/7610928#7610928 – 2012-02-08 13:58:09

+0

@Michael - 爲了讓購物車保持可用登錄後,我需要使用cookie將客人鏈接到他們的購物車,對不對?因爲訪問者離開網站後會不會刪除會話變量?如果將購物車存儲在數據庫中,最好是使用像user_id,item_id和quantity這樣的三列表,表中的一行代表訪問者在購物車中擁有的每件商品,或者將所有商品和數量在一列中使用逗號分隔列表或序列化它?謝謝! – user1197328 2012-02-08 15:49:43

+0

要鏈接已離開的用戶,您需要序列化購物車並將其存儲在數據庫中,並在用戶的Cookie中標識它們。或者製作永不過期的會議。使用數據庫存儲單個購物車值而不是一個序列化的字符串還有很多工作要做,但是如果你打算這樣做的話,你完全可以不用打擾$ _SESSION,而只是使用數據庫所有這一切。 – 2012-02-08 15:57:10

回答

5

我建議將購物車項目存儲在用戶的會話$_SESSION變量)中。如果您需要它們在會話中持續存在,請將它們放入數據庫表中。

在會話變量中,他們從篡改(他們在服務器端)是安全的,你不必擔心信息泄露(cookie中的所有內容或參數GET是會話ID)。

+0

你會如何建議將物品和數量存儲在數據庫中?很顯然,這些參數無法在手前確定,所以我無法爲購物車中的每個物品創建一列。我應該序列化數據並將其存儲在列中,然後讓另一列具有會話ID? – user1197328 2012-02-08 15:02:33

+0

@ user1197328如果您將它們鏈接到會話ID,那麼當會話過期時,它們將消失。您可以用三列 - 「user_id」,「item_id」和「quantity」來存儲購物車項目和數量。 'user_id'告訴你你在看哪個購物車,而表中的每一行都是他們購物車中的一種商品。 – Borealid 2012-02-08 15:05:29

+0

我明白了。因此,爲了讓購物車保持可供訪客使用,我需要使用cookie將客人鏈接到他們的購物車?你建議爲表格使用三列;這是否意味着我將在表格中爲遊客在購物車中的每件物品設置一行?比使用逗號分隔列表或序列化一列中的所有項目和數量更有效嗎?謝謝你的幫助! – user1197328 2012-02-08 15:16:52

0

您可以使用$ _SESSION存儲項目標識和數量。在用戶提交/確認訂單時,在結賬頁面上,您可以從數據庫中獲取項目價值與項目標識並計算實際價格。

0

如果使用數據庫將它們存儲在數據庫中。 如果您有客人購物,請將其存儲在temp_cart中,並將該客人鏈接到會話變量。

查找$ _SESSION。