在注册/身份验证之前,用户将项目添加到购物车

时间:2012-11-28 00:48:11

标签: php e-commerce shopping-cart

我可以知道如何允许非登录用户添加项目? (我们使用自定义解决方案而不使用开源电子商务包)

考虑因素是:

  1. 存储在数据库中:如果非登录用户信息作为访客用户存储在数据库中(为每个用户创建一个newid并将该ID存储在浏览器的会话中),那么我们应该如何知道何时访问删除它们?

  2. 在客户端存储:如果所有信息都保存在cookie中,则需要为此编写一组单独的代码,这样会很麻烦。

  3. 有什么建议吗?

2 个答案:

答案 0 :(得分:1)

设置一个唯一的cookie,将其存储在您的数据库中,包括添加的项目。所以将独特的访客连接在一起。 这样,当你的潜在买家回来时,你仍然知道他的篮子/兴趣 除非您的数据库中有数十亿条记录,否则不要打扰删除。但是,存储几周就足够了:)

答案 1 :(得分:1)

你可以做任何一种 - 两种技术都有效,在很多情况下,电子商务网站使用cookie存储临时购物车的内容,如果用户还没有通过登录或注册进行身份验证。

注意:即使您使用数据库存储临时购物车,您仍需要设置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);

- 或 -

使用cookies,一旦他们登录或注册,您就可以将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);

然后用于在新用户返回时重新填充其购物车:

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

它在CRM术语中也很有用,您可以根据他们尚未注册/不是客户的事实来更改用户体验/提供优惠或奖励〜首次订购20%的折扣...

在Cookie和数据库方法中,您需要考虑Cookie集的生命周期,因为相关用户可能位于共享计算机上,并根据您认为合适的内容进行设置。