Уничтожить сеанс PHP при закрытии
Я создал простую страницу входа, которая основана на сеансах.
session_start();
и добавил страницу выхода, содержащую это
session_destroy();
Теперь, когда я закрываю браузер/страницу и снова открываю ее, значения сеанса все еще существуют.
Я хочу знать, как полностью уничтожить сеанс на закрытии страницы/браузера.
Ответы
Ответ 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();