努力了解一些cookie /数据库购物车概念

时间:2016-04-20 23:27:10

标签: php shopping-cart

我试图了解如何正确实施购物车,基于保存带有唯一标识符的cookie来识别数据库中的用户购物车,无论用户是登录还是购物。我试着尽可能多地看一些例子,但我不能清楚地理解它。

到目前为止,这是我的方式:

[访客用户]

  1. 当用户将商品添加到购物车时,使用唯一ID创建Cookie
  2. 检查与数据库中的Cookie ID相关联的现有购物车
  3. 如果购物车不存在,请在数据库表'cart_id'中创建条目,并将Cookie ID作为会话标识符
  4. 在数据库表'cart_items'中创建条目,并将Cookie ID作为标识符
  5. [登录用户]

    1. 检查与用户名和Cookie ID
    2. 相关联的数据库表'cart_id'中的现有购物车
    3. 如果购物车存在,请使用数据库
    4. 中的Cookie ID重写新的Cookie ID
    5. 如果购物车不存在,请将用户名ID分配给具有用户唯一Cookie ID
    6. 的表'cart_id'

      这里是我遇到麻烦的地方:,以前的一切都很好,假设用户不仅决定在填写购物车后登录,那是我出错的地方。这就是我所拥有的:

      1. 检查与用户名和Cookie ID
      2. 相关联的数据库表'cart_id'中的现有购物车
      3. 如果购物车不存在,请将用户名分配给“cart_id”表
      4. 如果购物车已存在,请使用存储在数据库中的现有Cookie ID重写新的Cookie ID
      5. 使用用户存储的Cookie ID
      6. 重写“新”购物车项目(未登录时选择的项目)
      7. 检查现有购物车和新购物车项目中的重复购物车商品
      8. 如果找到重复的项目,请删除旧项目并替换为新的项目数量
      9. 等等等所以基本上我不认为它太好了,虽然我目前工作正常,但我觉得这个方式真的很糟糕。

        如果他们选择在购物车满载后登录,我如何更好地处理注册用户购物车?我是否需要为访客用户和注册用户提供单独的表格,如果他们在购买购物车后登录,我如何将访客购物车列表转移到注册用户购物车?

1 个答案:

答案 0 :(得分:0)

我认为您最好通过localStorage或cookie在本地存储每个订购商品(或整个购物车内容)。

你这样做,你在数据库上做了太多的请求。为什么?因为你假设一个cookie是可靠的,事实上,它不是。所以你的所有操作都使用" cookie ID"如果用户选择重置他的浏览器/删除他的cookie,则无所作为。

有很多方法可以销毁cookie,至少在localStorage中会更难。

我想说:在本地存储它,如果记录,则将本地保存的内容与数据库上的内容同步。但是,不要在数据库中存储未登记的用户购物车:最终你会以孤儿结束(由于某种原因不再存在cookie),而你却无法理解原因。