Я сделал заявку на бронирование, выполненную с использованием CakePHP, которая включает несколько шагов перед страницей проверки. В промежутке между этими шагами я храню информацию в сеансе.
Как это работает, так это то, что шаг 1 требует, чтобы они заполнили свою информацию. При переходе к этапу 2 информация на шаге 1 будет сохранена в объект сеанса. Когда они выполняются на других этапах, процесс повторяется. В конце, когда они проверяют, все данные затем сохраняются в базе данных.
Все отлично работает, если пользователь открывает один экземпляр приложения в браузере. Но как только у них есть другая страница или другая вкладка, открытая для одного и того же приложения в том же браузере, проблема возникает.
Скажем, у них есть два экземпляра приложения, открытых в Tab A и Tab B. В Tab A они ввели детали на шаге 1 и перешли к шагу 2. Затем пользователь делает то же самое в Tab B.
На последнем шаге, когда пользователь выполняет проверку, информация в Tab A та же, что и в Tab B.
В настоящее время я могу только думать, что лучший способ - это запретить пользователю открывать одно приложение в двух экземплярах браузера.
Есть ли способ обнаружить и пригласить пользователя заполнить форму бронирования в Tab A первым, когда они попытаются открыть другой экземпляр в Tab B?