В чем разница между session unset() и session destroy() в PHP?
от php.net документация:
session_destroy - разрушает все данные, зарегистрированные в сессии
session_unset - освободите все переменные сеанса
мой вопрос из трех частей:
эти две функции кажутся очень похожими.
В чем же на самом деле разница между ними?
оба, кажется, удалить все переменные зарегистрирован на сеанс. Действительно ли кто-то из них разрушает сам сеанс? Если нет, то как это сделать (уничтожить сам сеанс).
правильно ли, что ни одна из двух функций не удаляет файл cookie сеанса на клиенте?
7 ответов:
session_unsetпросто очищает$_SESSIONпеременной. Это эквивалентно делать:$_SESSION = array();так что это влияет только на локальный
$_SESSIONэкземпляр переменной, но не данные сеанса в хранилище сеанса.В отличие от этого,
session_destroyуничтожает данные сеанса, хранящиеся в хранилище сеансов (например, файл сеанса в файловой системе).все остальное остается не менявшийся.
session_destroy();удаляет весь сеанс.
session_unset();удаляет только переменные из сеанса-сеанс все еще существует. Усекаются только данные.
session_unset();просто очистите все данные всех переменных сеанса.
session_destroy();удалить все сессии.
пример:session_start(); session_destroy(); $a = "1234"; $_SESSION[a] = $a;
$_SESSION[a]иNULL.
session_start(); session_unset(); $a = "1234"; $_SESSION[a] = $a;
$_SESSION[a]и1234.
так, я использование:
session_start(); session_destroy(); session_start(); $a = "1234"; $_SESSION[a] = $a;
session_unset()ясный$_SESSIONпеременной (как вarray()), но он не будет касаться файла сеанса. Но когда скрипт заканчивается; состояние$_SESSIONбудет записано в файл. Затем он очистит файл, но не удалит его. Когда вы используетеsession_destroy()не трогать$_SESSION(использоватьvar_dump($_SESSION)послеsession_destroy()), но удалит файл сеанса, поэтому при выходе из скрипта не будет файла для записи состояния$_SESSION.
session_destroy()удалит сеанс после перемещения страницы иsession_unset()удалит сеанс при запуске кода.
Я пытался использовать
session_unset($_SESSION['session_name'])думая, что это будет только отменить определенное или отдельное/одно имя сеанса. Но с помощьюsession_unset($_SESSION['session_name'])будет только отменить все имя сеанса. Правильный код для использования толькоunset($_SESSION['session_name'])Если вы хотите отключить одно имя сеанса.