2011-08-29 192 views
11

我开始在php中开发一个多商店购物车,每个用户在不同的商店下都有一个购物车。我想知道当用户点击“添加到购物车”时,保存购物车详细信息(如产品名称,ID,价格等)的更好方法是什么。我认为我们可以通过两种方式来保存它:a)会话b)Db表。购物车,会话或数据库?

哪个更好的方法来保存所有这些信息?我想尽可能保证安全。

请建议。

谢谢

回答

7

您必须知道数据的关键性。如果您认为购物车中的数据不重要,并且不需要多个会话,那么您可以在会话中完成这些操作并保存一些写入数据库的操作。

即使您确实需要数据库,也可以保存一些写入操作,并将客户端用于临时存储,并最终使用某种同步机制将其移动到您的数据库。

但是,如果您的数据非常关键,而且它必须保持在多个会话中,那么数据库将是一个理想的选择,因为它会为您提供访问数据的更多权力,并且会减轻实施难度。

+0

在为访客shoppingcart使用会话的情况下,您希望尽可能少地存储在其中。 1,因为会话数据被传递到下一页(加载时间增加),2因为会话可能存在较长时间,因此诸如价格之类的关键数据不应该被缓存在会话中。 (有些情况下,你想'缓存'它,但你明白了吧?:) – Frankey

+0

@Frankey PHP会话变量不会发送到客户端。会话ID cookie用于向服务器指示它将与'$ _SESSION'关联的会话。 –

0

通过DataBase实现,您可以精细控制和更好的持久性。

使用会话来了解页面之间的登录用户,但数据库存储关键数据。

7

会话或数据库不是唯一选择 - 会话也可以存储在数据库中。在某些方面,您必须为用户检索购物车。在所有情况下,您都会为此进行会话。问题在于购物车是否应该在会话之间持续存在(针对注册用户)。在这种情况下,您不应该将购物车与会话连接起来。如果您想为注册用户保存购物车,允许未注册以拥有购物车,并且在用户登录时合并会话购物车和已保存的购物车,情况就会变得复杂。

所以要回答你的问题,你应该清楚你的要求。 什么意思是“不同商店下的购物车”? 将在登录之间保存购物车(例如用户在1周后回来)?

至于安全性,通常最好将会话保存在数据库中,因为您可以有额外的保护可以访问数据,特别是在共享主机上。