Сессии PHP и session_start ()

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

На сайте есть кнопка PayPal, которая перенаправляет пользователя в PayPal, чтобы он мог подтвердить платеж, прежде чем перенаправляться на сайт снова.

Перед переадресацией пользователя сохраняется загрузка переменных сеанса. Некоторые из них связаны с PayPal, другие – с вещами на моем сайте, такими как переменная, чтобы определить, какой пользователь зарегистрирован, их элементы корзины покупок и т. Д.

Теперь, вот где все пошло не так …

Пользователь перенаправляется с checkout.php на PayPal. Перед их перенаправлением присутствуют все переменные сеанса для сайта (показаны var_dump и print_r). Это отлично.

Пользователь возвращается из PayPal в orderreview.php, но var_dump и print_r теперь показывают, что переменные сеанса сайта отсутствуют, но все они есть в PayPal.

Я исправил эту проблему, удалив «session_start ();» от вершины orderreview.php.

Поэтому мой вопрос: почему удаление этой строки устранило проблему? Почему бы ему не работать раньше?

Я думал, что понял сессии PHP, но я не понимаю их так хорошо, как я думал.

Я читал это где-то:

«Начиная с PHP 4.3.3 вызов session_start (), когда сеанс уже запущен, приведет к ошибке уровня E_NOTICE. Кроме того, запуск второго сеанса будет просто проигнорирован».

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

Спасибо за любые ответы, еще раз прошу прощения, если это глупый вопрос.

Related of "Сессии PHP и session_start ()"

Это может быть из-за того, что вы были перенаправлены на другой сайт во время процесса. И пока вы возвращаетесь из Paypal на свой сайт, session_start() генерирует новый идентификатор сеанса, с которым не связаны ваши ранее сохраненные переменные сеанса.

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

Это только мое предположение.