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