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

Уничтожить сеанс PHP при закрытии

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

session_start();

и добавил страницу выхода, содержащую это

session_destroy();

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

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

4b9b3361

Ответ 1

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

session_set_cookie_params(0);
session_start();

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

Ответ 2

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

Ответ 3

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

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

// 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

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

Ответ 4

Если сеанс существует, выйдите из него, уничтожив сеанс и перенаправляя пользователя на домашнюю страницу. Для хранения идентификатора сеанса использовался временный файл cookie. Этот файл 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();
    }
    ?>

Ответ 5

, чтобы удалить переменные сеанса -   session_unset();

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

session_unset();
session_destroy();