Взорвался мозг. Нужен механизм одного окна

Raziel[SD]

untitled00
Если задача именно не дать пользователю по ошибке в другой вкладке забронировать, то частично эту проблему можно решить, через отправку сообщений в табы(или даже во все инстансы браузера, зависит от браузера) через postMessage чего-нить типа "выбран другой рейс, давай досвидания".

А вообще так и не ясна причина, почему нельзя хранить сессию с текущим выбраным рейсом и шагом в нем и при каждом переходе сравнивать.
 

полудух

Итсист
Так и есть. Но это как выяснилось, не решает проблему (см. ниже)
Ясен есть такая проверка, но она не помогла. Суть сошла на следующее.

1. Юзер дошел до пятого шага, на его экране автобус, с выбором места и выбором типа мест и одна строчка "укажите мобильный". У юзера страница не рефрешется (вкладка 1).
2. Юзер открыл другую вкладку, натыкал новый поиск на другой день, он дошел до 5-го шага, ему не понравилось сидеть спиной к водителю (тип автобуса другой, узнали позвонив ему), закрыл вкладку (вкладка 2).
3. Юзер видит старую вкладку (вкладка 1, шаг 5), прошла всего две минуты, страница по таймауту бронирования не закрыта. В сессии данные по другому рейсу (вкладка 2, шаг 5), но по тому же направлению, юзер тыкает на места (а они свободны на обоих рейсах), бронирует (естественно на рейс вкладки 2), видя вкладку 1. При этом по аяксу ему приходит эскиз билета с данными на рейс вкладки 2, но он сцуко упорытый и этого тоже не видит.
4. Находясь под веществами На странице оплаты заказа он забивает болт и не проверяет заказ (ни дату ни рейс), ему приходит электронный билет, он охеревает, что купил хз что, ведь тыкал он в места совсем другого рейса. Звонить и кроет матом.

При этом у меня на каждом этапе с 1 по 5-тый проверяется всё, если юзер на 3 шаге, ожидаемые данные на 4,5 - очищаются, проверяет целостность данных от первого до текущего шага. Очистка временных билетов из БД, в общем, целостность данных гарантирована.

PS. Это реальный пользователь, его поведение вытащино из внутренного детального лога поведения пользователя по сессии и восстановлено посекундно.
тебе просто нужно присваивать первой форме заказа свой уник. идентификатор, который потом hidden передаётся формам дальше
а на пользователя заводишь $ini = array(0,5,0,2,17,159) - хранишь в нём всё, что он там навыбирал
строго говоря, можешь в следующих формах хранить его выбор в hidden, можешь в сессии (но у неё время ограничено), можешь в куке
сам разберёшься
потом в конце по идентификатору находишь его выбор и выписываешь счёт
 
Последнее редактирование:
Сверху