В чем разница между session_unset() и session_destroy() в PHP?

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

session_destroy - уничтожает все данные, зарегистрированные на сеанс

session_unset - освободить все переменные сеанса

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

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

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

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

Ответ 1

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

$_SESSION = array();

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

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

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

Ответ 2

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

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

Ответ 3

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;

Ответ 4

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

Ответ 5

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

Ответ 6

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