我显然在某个地方错过了一些东西。
在某种程度上,客户在 11 秒的延迟(检查时间)内成功进行了两次预订。我的第一个想法是用户可能已经完成了预订,然后返回浏览器并再次完成了预订。然而,这是不可能的,因为我至少有 2 个验证,我知道这些验证会阻止这种行为。
留给我的唯一结论是,如果客户尝试提交预订,我们的网络服务在 11 秒内不知何故冻结,客户中止请求并再次提交,因此允许这两个预订同时发生。
除此之外,我不知道是什么原因造成的。MySQL插入延迟可能吗?
所以基本上我最想知道的是;
什么会导致表单提交并执行两次,而第二次绕过所有必需的验证?
我的表单的当前工作流程
用户在输入字段中提交数据,然后提交它们。我的系统验证所有这些输入并检查两个唯一代码,以确保它没有通过 MySQL 调用两次使用。它还确保可用座位数等于或大于预订的座位数。
在这种情况下,使用了相同的代码并且座位超出了允许的限制。
除非验证 POST,否则基本上不会将预订插入 MySQL。