如何检测用户是否为同一会话打开了两个选项卡?
我使用CakePHP完成了一个预订应用程序,该应用程序涉及结帐页面之前的几个步骤。在这些步骤之间,我将信息存储在会话中。
它的工作原理是步骤1要求他们填写他们的信息。转到步骤 2 时,步骤 1 中的信息将保存到会话对象中。当他们继续执行其他步骤时,该过程将重复。最后,当他们签出时,所有数据都将保存到数据库中。
如果用户在浏览器中打开应用程序的一个实例,则一切正常。但是,一旦他们在同一浏览器中为同一应用程序打开了另一个页面或另一个选项卡,问题就会发生。
假设他们在选项卡 A 和选项卡 B 中打开了应用程序的两个实例。在选项卡 A 中,他们在步骤 1 中输入了详细信息,然后继续执行步骤 2。然后,用户在选项卡 B 中执行相同的操作。
在用户执行签出的最后一步,选项卡 A 中的信息与选项卡 B 中的信息相同。
现在,我只能认为最好的方法是防止用户在两个浏览器实例中打开相同的应用程序。
有没有办法检测并提示用户在尝试在选项卡 B 中打开另一个实例时首先在选项卡 A 中完成预订表单?