Из документации php.net :
session_destroy – уничтожает все данные, зарегистрированные на сеанс
- Установка pdo_mysql на Amazon EC2 с PHP 5.5
- Как я могу использовать gzip для своих веб-файлов
- Symfony2 - Doctrine2 QueryBuilder ГДЕ В поле ManyToMany
- Отправка большого файла с клиента на сервер, правильно ли моя логика?
- Проверка орфографии и предложение правильного слова в PHP
session_unset – освободить все переменные сеанса
Мой трехчастный вопрос:
Эти две функции кажутся очень похожими.
В чем разница между этими двумя?
Оба, похоже, удаляют все переменные, зарегистрированные на сеанс. Кто-нибудь из них фактически уничтожает сам сеанс? Если нет, как это сделать (уничтожьте сам сеанс).
Правильно ли, что ни одна из двух функций не удаляет файл cookie сеанса на клиенте?
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_destroy () и session_unset () должны использоваться одновременно, чтобы убедиться, что данные сеанса обязательно удалены.