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

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

Возможный дубликат:
Как закончить сеанс PHP через 30 минут?

Я уничтожаю весь сеанс var в logout.php и вызываю его, когда пользователь нажимает logout, то, что пользователь не нажимает на logout.php, но напрямую закрывает браузер. как я могу удалить сеанс, тогда???

4b9b3361

Ответ 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.