На шаге 1 пользователь выбирает продукт, которым я являюсь
хранение $ _SESSION ['id'] = 55;
Теперь пользователь переходит к шагу 2 и открывает
другой продукт в новой вкладке.
Теперь переходим на эту вкладку. Теперь шаг 1
для продукта2
Теперь $ _SESSION ['id'] установлено на 56;
Пользователь перемещает вкладку 1 и переходит к шагу 3
Но теперь $ _SESSION ['id'] = 56, а не 55
Как я могу предотвратить это
Легко - вы не устанавливаете $ _SESSION ['id'] равным 56. Но, если серьезно, вы можете пересмотреть, как вы решаете свою проблему. Помещение идентификатора в сессию позволяет одновременно использовать только один продукт. Как указал @Gumbo, почему бы вам не вставить идентификатор в URL?
В качестве альтернативы, в зависимости от конкретной проблемы, вы можете подумать о настройке переменной сеанса, такой как $ _SESSION ['products'] [$ product_number], чтобы $ product_number содержал ваш шаг.
Рассмотрим следующий пример:
$ _ SESSION [ 'продукты'] [55] = 2; // мы здесь на шаге 2
$ _SESSION [ 'продукты'] [56] = 1; // мы здесь на шаге 1
На каждой странице узнайте, равно ли $ product_number! In_array () == false, а затем получите значение, чтобы определить, на каком шаге вы находитесь.