В чем разница между 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'])
Если вы хотите отключить одно имя сеанса.