правильный способ выхода из сеанса в PHP - PullRequest
31 голосов
/ 18 августа 2010

Я прочитал много учебников по 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");
?>

Есть ли более эффективный способ сделать это ?? Сеанс всегда можно создать, выполнив вход обратно, поэтому стоит ли мне беспокоиться об использовании session_destroy () и использовать вместо него unset ($ _ SESSION ['variable'])? какой из вышеперечисленных 3 сценариев более предпочтителен?

Ответы [ 4 ]

59 голосов
/ 18 августа 2010

Со страницы 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();
?>
11 голосов
/ 18 августа 2010

Лично я делаю следующее:

session_start();
setcookie(session_name(), '', 100);
session_unset();
session_destroy();
$_SESSION = array();

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

4 голосов
/ 18 августа 2010

Session_unset(); уничтожает только переменные сеанса.Для завершения сеанса есть другая функция с именем session_destroy();, которая также уничтожает сеанс.

update:

Чтобы полностью завершить сеанс, например, выйти из системы, идентификатор сеансатакже должен быть сброшен.Если файл cookie используется для распространения идентификатора сеанса (поведение по умолчанию), файл cookie сеанса должен быть удален.setcookie() может быть использовано для этого

2 голосов
/ 13 июля 2018
<?php
// Initialize the session.
session_start();
// Unset all of the session variables.
unset($_SESSION['username']);
// Finally, destroy the session.    
session_destroy();

// Include URL for Login page to login again.
header("Location: login.php");
exit;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...