0

我正在使用 Perl 开发购物车。我的客户希望一旦客户将产品添加到他的购物车中,其他人就无法使用该产品。如果用户在未完成订单的情况下关闭浏览器,那么产品应该会再次可用。

是否可以在 Perl 中从服务器访问所有在线客户端的会话值,或者如果有人在未下订单的情况下关闭浏览器,我是否可以通过另一种方式使产品再次可用。

我不想在窗口关闭时使用弹出窗口,因为它们通常被用户阻止。

4

2 回答 2

1

是否可以从服务器访问所有在线客户端的会话值

是的。这种方式将取决于您使用的会话库,但这当然是可能的。

但是,当您将项目添加到某人的购物车时,将项目标记为在主数据库中保留会更简单。会话数据是用户私有的数据,而不是全局数据。

如果一个人没有下订单就关闭浏览器,有没有办法

没有办法可靠地检测浏览器是否已关闭。即使它有,那么用户可能在同一个站点上还有另一个未关闭的窗口。

解决此问题的常用基本方法是在将项目添加到购物篮时将其保留一段时间。您可以告诉用户他们有多少时间。这是保留座位的剧院常用的方法。

您的座位将保留 20 分钟。如果您没有在那个时间内完成您的订单,它们可能会被释放,其他人可能会保留它们。

一种稍微复杂的方法是在用户(由会话标识)与站点交互时延长预订时间。如果人们正在浏览网站并购买多件商品,您可能需要这样做。

您可以使用 cron 作业清理旧的预留(已过期)。

于 2013-10-14T10:51:28.493 回答
0

当他们的购物车中有物品告诉他们他们在购物车中的产品可能会丢失给其他用户时,您可以让 javascript 显示一个警告框。

假设它是最后一个项目并且他们按下 OK,您可以创建一个函数,将您想要的任何信息提交给服务器,告诉它用户放弃了购物车中的项目。

于 2013-10-14T15:34:53.670 回答