Мне удалось получить запрос на обновление базы данных через 15 минут бездействия и выйти из системы. но когда пользователь входит в систему и закрывает браузер, единственный раз, когда они будут выходить из системы, в следующий раз на сайте. Как я могу это сделать, чтобы, даже если они закрывали браузер, база данных все равно каким-то образом обновляется?Выйти из системы, если браузер/вкладка закрывается, а пользователь не вышел из системы.
// log out the user after 60 seconds of inactivity
if (isset($_SESSION['timestamp'])) {
$elapsed_time = time() - $_SESSION['timestamp'];
if ($elapsed_time >= 900) {
mysql_query("UPDATE `users` SET `status` = '0' WHERE `user_id` = '$session_user_id'");
session_destroy();
header('Location:index.php');
}
}
$_SESSION['timestamp'] = time();
в этой точке, если пользователь входит в систему и закрывает браузер, они будут появляться авторизовались навсегда
Вы не можете надежно обнаружить, когда вкладка/окно закрыто. Это просто невозможно. Запустите запланированное задание в вашей системе, чтобы выходить из системы тем, кто простаивал дольше установленного периода и занимался более важными вещами. –
Вместо использования поля 'status' вы должны использовать поле' last_active'. Вы можете [infer] (https://en.wikipedia.org/wiki/Inference) бездействовать, исходя из того, когда произошло последнее действие пользователя. Отслеживание статуса пользователя по своей сути ненадежно в системе без учета штата, например в Интернете. –
Я использую статус, чтобы определить, должен ли пользователь иметь зеленую или красную точку рядом с их именем пользователя. как я могу достичь этого, используя last_active? вы можете дать мне пример кода? –