session_destroy()
завершает весь сеанс, то есть он будет удален из хранилища сеансов PHP и больше не может использоваться повторно. Если вы отключили только переменные сеанса и файлы cookie, сеанс все равно будет активным на стороне сервера и может быть переработан, если некоторые переменные сеанса снова установлены, а cookie с исходным идентификатором сеанса снова отправляется клиенту.
Иными словами, сеанс в основном состоит из секретного идентификатора, хранящегося где-то на веб-сервере, вместе с переменными сеанса, зарегистрированными на этом сеансе. Идентификатор сеанса отправляется клиенту (обычно в виде файла cookie), поэтому клиент может быть идентифицирован как «владелец» сеанса для последующих запросов. Предполагая, что сессия уже была создана и имеет переменные, зарегистрированные в ней, вот обзор того, что делают функции:
session_start()
импортирует все переменные сессии, относящиеся к идентификатору сеанса, который клиент отправляется из реестра сессии в $_SESSION
массив
session_unset()
или позвонив по unset()
$_SESSION
переменные будут удалены все переменные, зарегистрированные на текущей сессии, но не ясно сессия сама
- Отключение сеанса печенья клиента будет сигнализировать кли что сеанс завершен, но этот не будет удалить сеанс из реестра сеанса на сервере либо
session_destroy()
- единственная функция, которая фактически очистит сеанс из реестра сеансов, тем самым буквально «разрушая» сеанс
Хотя session_destroy()
будет отменить все переменные сессии, не будет ясно $_SESSION
массива в скрипте, который выполняется в данный момент, так что это еще хорошая идея, чтобы сбросить переменные сессии для предотвращения ошибок и проблем безопасности.
На соответствующую записку, РНР руководство рекомендует не использовать session_unset()
а неустановленные ключи от $_SESSION
:
Если $_SESSION
(или $HTTP_SESSION_VARS
для PHP 4.0.6 или меньше) используется, используйте unset()
для отмените регистрацию переменной сеанса, т.е. unset($_SESSION['varname']);
.
http://us.php.net/manual/en/function.session-destroy.php –
Большое спасибо, я читал это несколько раз, но не могу понять, что он делает. Почему это действительно не разрушает сеанс. Чтобы уничтожить сеанс, я должен использовать еще два шага. Но на самом деле session_destroy() должен делать эти шаги для меня. – Green
Если ответ «Еще один код *» предоставил вам необходимую информацию (я не вижу, как это может быть), согласились бы вы его принять? Обычно это делается здесь: p – RobinJ