Уничтожить PHP-сессию при закрытии - PullRequest
15 голосов
/ 10 ноября 2010

Я создал простую страницу входа, основанную на сеансах.

session_start();

и добавил страницу выхода из системы, которая содержит

session_destroy();

Теперь, когда я закрываю браузер / страницу и открываю ее снова, значения сессии все еще там.

Я хочу знать, как полностью уничтожить сеанс при закрытии страницы / браузера.

Ответы [ 5 ]

25 голосов
/ 10 ноября 2010

если вы используете:

session_set_cookie_params(0);
session_start();

Ваш файл cookie сеанса будет уничтожен при закрытии браузера ... так что ваш сеанс будет работать до тех пор, пока он не закроет браузер.IE.Вы входите в систему, и вы вошли в систему, вы закрываете браузер, снова открываете его, снова заходите на сайт, и вы не будете входить в систему.

5 голосов
/ 10 ноября 2010

Вы сможете только определить, было ли закрыто окно браузера с использованием javascript, и в этот момент вы могли бы инициировать запрос Ajax для выполнения действия выхода из системы.

0 голосов
/ 17 ноября 2017

Если сеанс существует, выйдите из системы, удалив сеанс и перенаправив пользователя на домашнюю страницу. Временный файл cookie использовался для хранения идентификатора сеанса. Это печенье также уничтожено.

<?php
    // This is the logout page for the site.
    session_start();//access the current session.
    //if no session variable then redirect the user
    if (!isset($_SESSION['user_id'])) {
    header("location:index.php");
    exit();
    }else{ //cancel the session
        $_SESSION = array(); // Destroy the variables
        session_destroy(); // Destroy the session
        setcookie('PHPSESSID', ", time()-3600,'/', ", 0, 0);//Destroy the cookie
        header("location:index.php");
        exit();
    }
    ?>
0 голосов
/ 13 ноября 2017

Сервер не может обнаружить закрытый браузер или вкладку, вы можете использовать Javascript или Ajax, но извините, я не знаю об этом.

Мое предложение - использовать Тайм-аут сеанса, поэтому сеанс будет уничтожен, если пользователь не предпримет никаких действий. Это пример:

// destroy every 2 minutes

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 120)) {
    // last request was more than 2 minutes ago
    session_destroy();   // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

// end of code

Надеюсь, это поможет вам

0 голосов
/ 04 января 2016

для удаления переменных сеанса - session_unset ();

чтобы уничтожить сессию - session_destroy ();

session_unset();
session_destroy();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...