【问题标题】:Storing shopping cart items into cookies and database将购物车项目存储到 cookie 和数据库中
【发布时间】:2011-08-18 04:41:41
【问题描述】:

我正在开发一个电子商务网站。当用户未登录我的网站并单击“立即购买”按钮时,我想将此信息存储到 cookie 以及数据库中。购物车的表格看起来像

SHOPPING_CART 
(
     sessionid   int(10), 
     itemid      int(10), 
     quantity    tinyint(10) unsigned
     date_added  datetime
);

主键是:(sessionid, itemid)

当用户关闭浏览器时,购物车项目也应该被保留。现在我的问题如下:

  1. 当用户未登录我的网站时,我应该根据什么来识别用户?
  2. 我应该使用IP address 存储信息吗?如果是,那么如何?在这种情况下,上表中的sessionid 将是用户的IP 地址。对吗?
  3. 我是否应该为每个用户创建一个临时会话? 访问我的网站然后存储信息?如果是,那么如何?
  4. 即使用户 关闭浏览器窗口?我应该从数据库中检索还是 饼干?
  5. 还有其他更好的方法来存储和检索信息吗?

注意1:我可以使用大量可用的购物车软件/代码/库。但我想知道:如何识别用户?以及存储/检索数据。

注意2:每件商品的价格、订购、发货信息都存储在不同的表中。

【问题讨论】:

    标签: php javascript mysql session


    【解决方案1】:
    1. 您所能做的就是为用户创建一个唯一的假身份
    2. 没有。多个用户可能拥有相同的 IP 地址,而单个用户可能会更改其 IP 地址
    3. 是的。一旦您要求开始会话,PHP 就会为您创建一个会话。您必须将身份与此会话相关联。只需使用随机数或 UUID 生成器或类似的东西来生成独特且不易猜到的东西。然后将身份存储在 cookie 中,以便当用户稍后返回时,您可以将他的身份与新会话重新关联。
    4. 我只想将身份存储在 cookie 中。 cookie 仅保存少量信息,用户可能会在您不知情的情况下对其进行修改。
    5. 如果用户不登录,我看不到任何其他方式。

    【讨论】:

    • @djangofan:在数据库中序列化结构化数据有什么意义?这只是使它无法查询。这并没有回答主要问题:如何将未登录的用户与存储在数据库中的购物车关联起来。
    • 基本上,我试图建议他可以将购物车简化为管道分隔的字符串,尽可能短,并将该字符串存储在 cookie 和数据库中。你的权利,序列化是多余的,没有必要。
    【解决方案2】:

    您唯一需要做的就是将 sessionid 设置为 client-cookie。 如果客户返回并展示了一个 sessionid cookie,您将使用他的新 sessionid 更新您的购物车表(并在 cookie 中设置新的 sessionid)。

    1. 会话(这就是它的用途)
    2. 没有
    3. '临时会话'?
    4. 购物车在数据库中
    5. 在什么意义上更好?安全的?强大的?用户友好吗?

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 2020-08-02
      • 2019-03-16
      相关资源
      最近更新 更多