2011-08-08 6997 views
2

我正在致力于电子商务网站。当用户没有登录到我的网站并点击“立即购买”按钮时,我想将这些信息存储到cookie以及数据库中。对购物车的表看起来像将购物车项目存储到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. 即使用户 关闭浏览器窗口,购物车的物品如何保存?我应该从数据库还是从 cookie中检索?
  5. 任何其他更好的方法来存储和检索信息?

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

注2:每件商品的价格,订购,运输信息都存储在不同的表格中。

回答

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

@djangofan:序列化数据库中的结构化数据有什么意义?这只是使它不可查询。这并没有回答主要问题:如何将未登录的用户与存储在数据库中的其中一个购物车相关联。 –

+0

基本上,我试图建议他可以将购物车简化为管道分隔的字符串,尽可能短,并将该字符串存储在cookie中以及数据库中。你的权利,序列化是矫枉过正,没有必要。 – djangofan

0

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

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