Я прочитал много php-учебников для скриптов выхода, мне интересно, что может быть правильным способом выхода из сеанса!
Скрипт 1
<?php session_start(); session_destroy(); header("location:index.php"); ?>
Скрипт 2
<?php session_start(); session_unset(); session_destroy(); header("location:index.php"); ?>
Скрипт 3
<?php session_start(); if (isset($_SESSION['username'])) { unset($_SESSION['username']); } header("location:index.php"); ?>
с<?php session_start(); if (isset($_SESSION['username'])) { unset($_SESSION['username']); } header("location:index.php"); ?>
Есть ли более эффективный способ сделать это? Сессия всегда может быть создана путем входа в систему, поэтому я должен беспокоиться об использовании session_destroy () и вместо этого использовать unset ($ _ SESSION ['variable'])? какой из этих трех сценариев более предпочтителен?
На странице session_destroy () в руководстве по PHP :
<?php // Initialize the session. // If you are using session_name("something"), don't forget it now! session_start(); // Unset all of the session variables. $_SESSION = array(); // If it's desired to kill the session, also delete the session cookie. // Note: This will destroy the session, and not just the session data! if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } // Finally, destroy the session. session_destroy(); ?>
Лично я делаю следующее:
session_start(); setcookie(session_name(), '', 100); session_unset(); session_destroy(); $_SESSION = array();
Таким образом, он убивает файл cookie, уничтожает все данные, хранящиеся внутри, и уничтожает текущий экземпляр информации о сеансе (который игнорируется session_destroy
).
Session_unset();
только уничтожает переменные сеанса. Для завершения сеанса есть еще одна функция session_destroy();
который также разрушает сеанс.
Обновить :
Чтобы вообще убить сеанс, как и для выхода из системы, идентификатор сеанса также должен быть отменен. Если для распространения идентификатора сеанса (поведение по умолчанию) используется куки-файл, необходимо удалить куки-файл сеанса. setcookie()
может использоваться для этого