надлежащим образом для выхода из сеанса в PHP

Я прочитал много руководств по 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'])? Какой из трех сценариев выше предпочтительнее?

31
задан Shiv Deepak 18 August 2010 в 13:22
поделиться

3 ответа

Со страницы 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();
?>
61
ответ дан 27 November 2019 в 21:47
поделиться

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

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

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

11
ответ дан 27 November 2019 в 21:47
поделиться

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

обновление:

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

4
ответ дан 27 November 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: