Подтвердить что ты не робот

Правильный способ выхода из сеанса в PHP

Я прочитал много php-руководств для скриптов выхода, мне интересно, что может быть правильным способом выхода из сеанса!

Script 1

<?php
session_start();
session_destroy();
header("location:index.php");
?>

Script 2

<?php
session_start();
session_unset();
session_destroy();
header("location:index.php");
?>

Script 3

<?php
session_start();
if (isset($_SESSION['username']))
{
    unset($_SESSION['username']);
}
header("location:index.php");
?>

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

4b9b3361

Ответ 1

На странице 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 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();
?>

Ответ 2

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

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

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

Ответ 3

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

update:

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