2012-11-28 21 views
2

我可以知道我應該如何允許非登錄用戶添加項目? (我們使用的是定製的解決方案,而無需使用一個開源的電子商務包)用戶在註冊/認證之前將項目添加到購物車

的考慮是:

  1. 存儲在數據庫中:如果不登錄的用戶信息存儲在數據庫中的guest用戶(創建每個用戶都需要newid,並在瀏覽器會話中存儲該id),那麼我們應該如何知道何時刪除它們?

  2. 存儲在客戶端:如果所有信息都保存在cookie中,則需要爲此編寫一組單獨的代碼,這很麻煩。

有什麼建議嗎?

+0

對於同一主題的REST API呢? –

回答

1

設置一個獨特的cookie,將其存儲在數據庫中,包括添加的項目。因此將籃子和獨特的訪客連接起來。 這樣,當你的潛在買家回來時,你仍然知道他的購物籃/興趣 不要擔心刪除,除非你有數十億的數據庫記錄。然而,存儲在幾個星期應該夠:)

1

您可以執行 - 這兩種技術都是有效的,但在許多情況下,電子商務網站使用cookie存儲臨時購物推車的內容如果用戶尚未通過登錄或註冊進行身份驗證。

注:即使您使用DB來存儲臨時車,你仍然需要設置cookie識別它們在一個基本方式:

// Temp user id 
    $cart_id = "108376"; // Pulled from DB 

    // Two week cookie (86,400 secs per day for 14 days) 
    setcookie('abc_cart_id', '$cart_id', time() + 86400 * 14); 

- 或 -

使用cookie,一旦他們登錄或註冊,您可以將cookie(和購物車內容)的內容寫入您的數據庫。 這樣,您就不會向您的數據庫添加不必要的條目,這些條目是孤立的或需要在以後丟棄(以及用於管理它的流程)。

在許多商業解決方案,我(使用PHP和有時含有數百個項目中)看到的,Cookie通常採取serialized array或形式使用JSON

// Serialise array 
    $cart = serialize($cart_contents); 

    // Two week cookie (86,400 secs per day for 14 days) 
    setcookie('abc_cart', '$cart', time() + 86400 * 14); 

然後用於重新-populate他們的車,當新用戶返回:

if (isset($_COOKIE['abc_cart'])) 
    { 
    $cart = unserialize($_COOKIE['abc_cart']; 
    // Take action ~ populate cart/DB etc... 
    } 

它也是有用的CRM而言,在那裏你可以改變UX /讓他們提供或基於這樣的事實激勵機制,他們還沒有簽署/麥凱納還沒有客戶〜20%的一階...

在這兩個Cookie和DB的方法,你需要考慮設置問題的用戶可以是共享計算機上的cookie的有效期,並設置基於你考慮適當。

相關問題