Сессии PHP во вкладке - PullRequest
       1

Сессии PHP во вкладке

1 голос
/ 19 февраля 2011

рассмотрим эту проблему

  1. На шаге 1 пользователь выбирает продукт, который я храню $ _SESSION ['id'] = 55;
  2. Теперь пользователь переходит к шагу 2 и открывает другой продукт на новой вкладке.
  3. Теперь переходим на эту вкладку. Теперь это шаг 1 для продукта2
  4. Теперь $ _SESSION ['id'] установлено на 56;
  5. Пользователь перемещает вкладку 1 и переходит к шагу 3
  6. Но теперь $ _SESSION ['id'] = 56, а не 55

Как я могу предотвратить это.Это сложная проблема, поэтому хотелось бы обобщенного решения.

Ответы [ 2 ]

3 голосов
/ 19 февраля 2011

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

Вам следует изучить использование файлов cookie или нескольких сеансов, но вы не можете изменять одни и те же сеансы на каждой вкладке.

1 голос
/ 19 февраля 2011

На шаге 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, а затем получите значение, чтобы определить, на каком шаге вы находитесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...