Возникла проблема. Существует сайт состоящий из трёх страниц: index.php, welcome.php и user.php.
В index вводятся данные в форму, вызывается welcome.php, где вызываются данные из бд и в случае совпадения записываются в $_SESSION[‘login’] и редирект на user.php.
В user.php есть приветствие, в котором задействуется вышеупомянутая сессионная переменная, то есть мы сразу видим под каким пользователем вошли.
Так же на этой странице есть кнопка, вызывающая функцию выхода из аккаунта, а точнее: session_destroy() и последующий редирект на index. Возникает следующая проблема: даже после выхода и следовательно уничтожения сессии, если я напрямую в адресной строке обращусь к user.php, на странице пользователя меня поприветствуют под последним именем. То есть по факту сессионная переменная $_SESSION[‘login’] удалена не была. Каким образом это возможно и как это исправить?
а перед уничтожением сессии, вы инициализируете её?
т.е. перед session_destroy() важно выполнить session_start(),
чтобы PHP понимал кого ему вообще уничтожать
ihateyourcode, первая проблема - в отсутствии кода, в котором есть проблема. В кофейной гуще его почему-то не видно, Шар Предвидения сегодня вообще обесточенно-выключенный, а бараньи кости вчера кошка сгрызла. Поэтому без исходного кода - ну совсем-совсем никак не погадаешь!
Из офф мануала:
session_destroy() уничтожает все данные, связанные с текущей сессией. Данная функция не удаляет какие-либо глобальные переменные, связанные с сессией и не удаляет сессионные cookie. Чтобы вновь использовать переменные сессии, следует вызвать session_start().
Замечание: Нет необходимости вызывать session_destroy() в обычном коде. Очищайте массив $_SESSION вместо удаления данных сессии.