购物车问题

时间:2011-04-08 12:45:26

标签: c# asp.net shopping-cart

我在网站上实施了简单的购物车。我将购物车和商品保存在Session对象中。用户结账后(使用Paypal),我清除购物车项目。这很好,但我在以下场景中看到了一个问题:

假设用户在购物车中添加了一些商品并打开了另一个浏览器并登录。他现在可以在两个浏览器中看到这些商品。现在,如果他在一个浏览器中结账,他仍然能够在其他窗口中看到购物车项目,因为两个浏览器都有单独的会话。

我应该采取什么方法来避免这种情况或将不得不忍受这种情况?

编辑: - 在发布问题后,我正在思考它。我会满足于这个简单的解决方案,每当用户去结账时,我会点击数据库加载购物车而不是会话。这样我就不会在数据库中显示购物车中的商品(在顶部),也不会有基于幻影项目的结帐。

3 个答案:

答案 0 :(得分:1)

从您在会话中保存购物车项目的那一刻开始,您就会有不同的会话。您可以使用不同的购物车。

要消除这种情况,您需要为要保存购物车的所有会话设置一个共同的地方这是一个数据库表。这个公共位置使用用户ID连接到用户ether,使用用户cookie连接以太网。

答案 1 :(得分:0)

您必须使用AJAX-ify页面的购物车面板部分,并使用setTimeout()定期刷新它。

可能比它的价值更多 - 但是 - 如果你做得对,在第二页上再次点击'checkout'不应该导致重复交易,列表将在下一页加载时刷新。

修改

通过“正确行事”,我的意思是根据用户的ID来跟踪购物车项目,而不是只是会话对象。

答案 2 :(得分:0)

您的网络应用程序基于HTTP协议,该协议只是为了满足Http Web请求而打开和关闭连接。现在很常见的是,如果你打开另外两个浏览器并查看其中一个浏览器,你仍然可以在另一个浏览器上看到相同的页面(信息)。我认为你应该做的只是避免用户可以结账两次或处理是否有人试图检查一个空篮子(如果用户在第二个浏览器上点击结账,那就是你的情况) 在这种情况下,你可以只显示一条消息。如果您选择按时间间隔刷新的解决方案页面,请记住如果用户打开并登录到250个不同的会话中会发生什么:您的Web应用程序将被击中多少时间? 如果您继续我的建议,所有用户会话将只会出现一个错误页面:bastek为空。 我希望这是有道理的