我可以知道我应该如何允许未登录用户添加项目吗?(我们使用定制的解决方案,不使用开源电子商务包)
考虑是:
存储在数据库中:如果未登录用户信息作为访客用户存储在数据库中(为每个用户创建一个 newid 并将该 id 存储在浏览器的会话中),那么我们应该如何知道何时删除它们?
Store at client:如果所有信息都保存在cookie中,那么就需要单独写一组代码,比较麻烦。
有什么建议吗?
我可以知道我应该如何允许未登录用户添加项目吗?(我们使用定制的解决方案,不使用开源电子商务包)
考虑是:
存储在数据库中:如果未登录用户信息作为访客用户存储在数据库中(为每个用户创建一个 newid 并将该 id 存储在浏览器的会话中),那么我们应该如何知道何时删除它们?
Store at client:如果所有信息都保存在cookie中,那么就需要单独写一组代码,比较麻烦。
有什么建议吗?
你可以做任何一个 - 这两种技术都是有效的,但在许多情况下,如果用户尚未通过登录或注册进行身份验证,电子商务网站会使用 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);
- 或者 -
使用 cookie,一旦他们登录或注册,您可以将 cookie 的内容(和购物车内容)写入您的数据库。这样,您就不会将不必要的条目添加到孤立的或需要在以后丢弃的数据库中(以及管理它的过程)。
在我见过的许多商业解决方案中(使用 PHP,有时包含数百个项目),cookie 通常采用序列化数组的形式或使用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 术语中也很有用,您可以根据他们尚未注册/还不是客户的事实更改 UX/为他们提供优惠或激励措施〜您的第一个订单可享受 20% 的折扣......
在 Cookie 和 DB 方法中,您需要考虑 cookie 集的生命周期,因为相关用户可能在共享计算机上,并根据您认为合适的方式进行设置。
设置一个唯一的 cookie,将其存储在您的数据库中,包括添加的项目。因此,将购物篮和独特的访客连接在一起。这样,当您的潜在买家回来时,您仍然知道他的购物篮/兴趣 不要担心删除,除非您的数据库中有数十亿条记录。但是,存放几周就足够了:)