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


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

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

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

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

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

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

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

7 75

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

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