2016-04-13 6 views
3

session_destroy() уничтожает данные сеанса, но не отменяет никаких глобальных переменных, связанных с сеансом, или не удаляет файл cookie сеанса.Почему мы должны уничтожать сеанс в php?

Итак, почему мы должны уничтожать сеанс?

Можем ли мы уничтожить сеанс в конце страницы каждый раз, когда сеанс начинается в начале этой страницы, предоставляя такую ​​же функциональность, не уничтожая также?

+0

Возможно, дубликат [What is Session Destroy Do in PHP] (http://stackoverflow.com/questions/18549211/what-does-session-destroy-do-in-php) –

+0

'session_destroy' просто не делает делайте намеченную работу очень хорошо, [попробуйте этот подход] (http://stackoverflow.com/questions/3948230/best-way-to-completely-destroy-a-session-even-if-the-browser-is-not -закрыто). – Martin

+1

После использования 'session_destroy()', cookie сеанса удаляется и сеанс больше не сохраняется на сервере. Значения в '$ _SESSION' могут быть доступны, но они не будут загружаться на следующей странице. – Daan

ответ

5

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

Не называть это на каждой странице! Только после выхода пользователя из системы, и вам больше не нужна сохраненная информация.

+0

Можно ли взломать данные из файла сеанса? Даже если мы не удалим session_destroy, наши данные безопасны, просто отключив переменные сеанса? – user6181297

0

Ваш правильный подход должен запустить session_destroy, а затем перезагрузите страницу, чтобы заставить сеанс меняющийся действия (например, куки удаления), чтобы работать, а затем данные сеанса в PHP перезагружается и обновляет на перезагрузки страницы.

Перед запуском сессии уничтожить вы также должны «вручную» очистить сессию, а так:

<?php 
session_start(); 

if(count)$_SESSION > 0) { 
// Or some other more specific cursory check if the session is populated 
    $_SESSION = array("","","",""); 
    session_destroy(); 
    header("Location: thispage.php"); 
    exit; 
    } 

... 
Page continues.... 

Также просьба ссылаться this answer о том, как удалить куки сессии на клиентском браузере.

Смежные вопросы