Уничтожьте или отмените сеанс, когда пользователь закроет браузер без нажатия на выход из системы
Возможный дубликат:
Как закончить сеанс PHP через 30 минут?
Я уничтожаю весь сеанс var в logout.php и вызываю его, когда пользователь нажимает logout, то, что пользователь не нажимает на logout.php, но напрямую закрывает браузер. как я могу удалить сеанс, тогда???
Ответы
Ответ 1
Вы можете установить время истечения для данных сеанса, протестировать его при каждом вызове session_start
и уничтожить сеанс, если он истек:
session_start();
if (!isset($_SESSION['EXPIRES']) || $_SESSION['EXPIRES'] < time()+3600) {
session_destroy();
$_SESSION = array();
}
$_SESSION['EXPIRES'] = time() + 3600;
Ответ 2
Вы не можете. Тем не менее, файлы cookie сеансов обычно отправляются без истечения срока, что означает, что они удаляются при закрытии браузера, поэтому сеанс все равно теряется.
Ответ 3
Сессии PHP должны автоматически истекать, когда окно браузера закрывается, если вы не изменяете время истечения сеанса cookie сеанса. Если этого не произойдет, я бы предположил, что вы каким-то образом модифицировали это, и нам потребуется дополнительная информация, чтобы помочь.
Ответ 4
Сессия может быть настроена так, чтобы просто истечь, сервер не слышит от клиента через определенный промежуток времени. Это направление, в котором вы хотите смотреть...
Martin
Ответ 5
Если вы не установите время истечения срока действия cookie сеанса, оно будет удалено, когда пользователь закроет браузер, что имеет тот же эффект для большинства практических целей (если вы не беспокоитесь о хранении или безопасности). Если это не достаточно хорошо, вы можете быстро завершить сеансы и периодически обновлять их через AJAX.