Я знаю, что уже немного поздно, но недавно я столкнулся с этой проблемой, и я отвечу на нее всем, кто в ней нуждается.
Я почти уверен, что вы перенаправили метод header
ната же страница, которая сделала unset
сессии.Что-то вроде этого:
<?php
if(condition)
$_SESSION = "foo";
header("Location: $self");
?>
<html>
...
<?php echo $_SESSION["foo"]; unset($_SESSION["foo"]); ?>
...
Проблема с header
заключается в том, что он не останавливает выполнение скрипта (как кажется), и поэтому скрипт продолжал выполнять и сбрасывать сеанс.
Решение состоит в том, чтобы добавить exit(0)
(или любой другой флаг, который вам может понадобиться) после перенаправления заголовка, например:
<?php
if(condition)
$_SESSION = "foo";
header("Location: $self");
exit(0);
?>
Это действительно очень непонятная проблема и занимает много времени, так какхорошо.