В чем разница между session unset() и session destroy() в PHP?


Из php.net документация:

Сессия_дестрой - Уничтожает все данные, зарегистрированные в сеансе

Session_унсет - Освободите все переменные сеанса

Мой вопрос из трех частей:

Эти две функции кажутся очень похожими.
В чем на самом деле разница между этими двумя?

Оба, похоже, удаляют все переменные, зарегистрированные в сеансе. Действительно ли кто-нибудь из них разрушает саму сессию? Если нет, как вы это делаете (уничтожаете саму сессию).

Правильно ли, что ни одна из двух функций не удаляет файл cookie сеанса на клиенте?

Author: Ashwini Agarwal, 2010-11-29

7 answers

session_unset просто очищает переменную $_SESSION. Это эквивалентно выполнению:

$_SESSION = array();

Таким образом, это влияет только на локальный экземпляр переменной $_SESSION, но не на данные сеанса в хранилище сеансов.

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

Все остальное остается неизменным.

 115
Author: Gumbo, 2010-11-30 10:20:37

session_destroy(); удаляет весь сеанс.

session_unset(); удаляет только переменные из сеанса - сеанс все еще существует. Усекаются только данные.

 14
Author: Xamael, 2014-05-04 17:24:06
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;
 14
Author: SLyHuy, 2016-03-07 12:33:44

session_unset() очистит переменную $_SESSION (как в array()), но не коснется файла сеанса. Но когда скрипт завершится; состояние $_SESSION будет записано в файл. Затем он очистит файл, но не удалит его. При использовании session_destroy() он не коснется $_SESSION (используйте var_dump($_SESSION) после session_destroy()), но удалит файл сеанса, поэтому при выходе из сценария не будет файла для записи состояния $_SESSION.

 4
Author: kaushik, 2015-02-04 06:43:18

session_destroy() удалит сеанс после перемещения страницы и session_unset() удалит сеанс при запуске кода.

 0
Author: Radian Yusuf Mahendra, 2017-12-18 06:26:34

Я попытался использовать session_unset($_SESSION['session_name']), думая, что это приведет только к отмене определенного или отдельного/отдельного имени сеанса. Но использование session_unset($_SESSION['session_name']) приведет только к отмене всех имен сеансов. Правильный код для использования только unset($_SESSION['session_name']), если вы хотите отменить установку одного имени сеанса.

 0
Author: Marvin, 2018-03-07 02:42:37

Я думаю, что session_destroy() и session_unset() следует использовать одновременно, чтобы убедиться, что данные сеанса наверняка удалены.

 -2
Author: Riaj Mahmud Rasel, 2015-05-02 13:14:53