gpt4 book ai didi

javascript - 在预订应用程序中保存房间

转载 作者:行者123 更新时间:2023-12-03 11:39:40 25 4
gpt4 key购买 nike

我有一些酒店预订网站。符合条件的人可以选择酒店、日期和容量并支付订单。

当客户做出决定并单击订单按钮时​​,会发生以下几个步骤:

  1. 应用程序再次检查价格并收集订单信息

  2. 为客户保留房间以防止超额预订

  3. 客户订单窗口的计时器设置为 5 分钟(如果时间到了,房间将被释放)

If the client goes out the orger page a null_timer is trigered andsaved rooms are released

If the client starts order (in order page) he can't procced otherorders

  • $_SESSION['order_iddle']计时器 更改触发客户端通过ajax

JS触发

window.onbeforeunload = function(){ 

timer_null();
return "";

}

PHP 检查

if ((!isset($_SESSION['order_iddle'])) || (!$_SESSION['order_iddle']) )  {

header('location: https://home-page/');

}
  • $_SESSION['order_iddle'] 使用 php 中的计时器进行更新。
  • timer_null() 向 php 发送 ajax 请求以更新/检查计时器

问题 1:

此逻辑依赖于 onbeforeunload() 函数,但如果该函数在某些浏览器中不起作用,我们就会遇到麻烦。当用户离开订单页面时,是否有更好的方法触发 timer_null() ?也许用 PHP 编写?

问题 2:

onbeforeunload() 触发并且用户点击“留在页面上”时,timer_null() 无论如何都会触发。这有什么关系吗?

谢谢)

最佳答案

更好的选择是在后端为订单指定到期值。这样你就可以避免触发、用户不使用 JS 时出现的问题、用户停留在页面上时出现的问题等。

当他们下订单时,将值设置为当前时间加上分钟数:

$order['expiry'] = time() + (5 * 60); // sets an expiry time for 5 minutes (5x60 seconds)

然后在未来的页面上检查订单是否有效:

if (time() > $order['expiry']) {
throw new Exception('This order is not valid');
}

捕获该异常并将其返回给用户,只要您愿意。

更广泛使用的建议

您的用例中可能还有其他需要保留库存五分钟的内容。但是,如果您也将此到期日期合并到数据存储中,则可以使用它来检查任何 future 订单的到期日期。

如果您不想在每次发出新订单时都检查数千条可能过期的记录,您可以创建一种自动运行的“清理”脚本。如果您之前没有使用过 crontab,我建议您阅读一下它,但是使用 crontab 设置了每天午夜运行的脚本:

0 0 * * * php /var/www/my-clean-up-script.php

然后在脚本本身(伪代码)中:

$expired_orders = database_query ( GET orders FROM table WHERE expired_time < current_time)
for each $expired_orders
database_query ( DELETE order)

这应该适用于任何可查询的数据存储。

关于javascript - 在预订应用程序中保存房间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26338547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com