2016-04-20 61 views
2

我想讓我的頭部周圍如何正確實施購物車的基礎上保存一個具有唯一標識符的cookie以識別數據庫中的用戶購物車是否用戶登錄或作爲購物客人。我試圖儘可能多地看一些例子,但我對它的理解不夠清楚。努力瞭解一些cookie /數據庫購物車的概念

以下是我有這麼遠:

[Guest用戶]

  1. 建立一個具有唯一ID的Cookie當用戶添加項目到購物車
  2. 檢查與數據庫中的Cookie ID相關聯的現有車
  3. 如果購物車不存在,請在數據庫表'cart_id'中創建條目,cookie ID爲會話標識
  4. 在數據庫表'cart_items'中使用Cookie ID a創建條目S上的標識符

[在用戶登錄]

  1. 檢查在DB表現有車 'cart_id' 與用戶名和Cookie ID相關
  2. 如果車存在,重寫Cookie ID爲新的Cookie ID從數據庫
  3. 如果車不存在,用戶名ID分配到餐桌 'cart_id' 與用戶唯一的Cookie ID

這裏是我遇到麻煩的地方:,以前所有的都很好,假設用戶不僅決定在填寫購物車後決定登錄,那是我出錯的地方。下面是我有:

  1. 您在數據庫表中的現有車「cart_id」使用用戶名和Cookie ID相關
  2. 如果車不存在,分配用戶名「cart_id」表
  3. 如果購物車已存在,改寫與現有的存儲在數據庫中的Cookie ID
  4. 重寫「新」車中的項目(選擇,而沒有登錄項目)與用戶存儲的cookie ID
  5. 檢查從現有的購物車和新的購物車項目的重複購物車的物品新的Cookie ID
  6. 如果找到重複的項目,刪除舊項目與新項目數量
  7. 更換

等等等等所以基本上我不認爲它是太順利,但我目前工作好,看來我要去約一個非常糟糕的方式它。

如果他們在填滿購物車後選擇登錄,我該如何更好地處理註冊用戶的購物車?我是否需要爲訪客用戶和註冊用戶設置單獨的表格,如果他們在選擇購物車後登錄,如何將客戶購物車列表轉移到註冊用戶購物車?

回答

0

我認爲您最好在本地存儲每個訂購商品(或整個購物車內容),無論是通過localStorage還是cookie。

你這樣做的方式,你對數據庫做了太多的請求。爲什麼?因爲你認爲cookie是可靠的,事實上,它不是。因此,如果用戶選擇重置瀏覽器/刪除Cookie,那麼所有使用「Cookie ID」的操作都無效。

有很多方法可以銷燬cookie,至少在localStorage上更難。

我會說:將其存儲在本地,如果已記錄,則將本地保存的數據與數據庫上的數據同步。但是,不要在數據庫中存儲未記錄的用戶購物車:最終,您最終會得到孤兒(由於某種原因,不會再有cookie),並且您將無法理解其原因。

+0

我會對本地存儲做一些研究。雖然公平地說,如果cookie被銷燬,在這種情況下只有訪客用戶會受到影響,並且當註冊用戶登錄新的cookie時,可以根據與其在DB中的用戶名相關聯的存儲的唯一cookie ID來覆蓋或生成。 – Bezzzo