У меня есть javascript-таймер для выхода из системы после определенного периода неактивности (когда нет движения мыши или кликов по документу).logout timer php/javascript
document.onkeypress = ResetTimer;
document.onmousemove = ResetTimer;
wait = 10;
function ResetTimer()
{
time = new moment();
clearTimeout(timer);
timer = setTimeout("Logout()", 60000 * wait); //logout the user with an ajax call
}
У меня также есть переменная сеанса, которая отслеживает последний раз, когда пользователь совершил php-вызов. Если пользователь не запросил ни одного запроса за 10 минут, пользователь выйдет из системы. Проблема, с которой я столкнулась, заключается в том, что если пользователь перемещается по документу, оставаясь на одной странице, он не будет отключен javascript, но PHP будет следовать его следующему запросу. Было бы хорошей практикой обновить переменную сеанса с помощью ajax-вызова через 9 минут, когда пользователь находится на одной странице (поскольку время ожидания составляет 10 минут)?
Лучший шаблон для использования в сеансовых критических приложений, чтобы сделать запрос AJAX один раз в минуту или около того (в периоды бездействия), чтобы проверить, что сессия все еще активна. Если вы можете сохранить временную метку, когда сессия закончится, вы можете показать пользователю подсказку на экране, чтобы сказать что-то вроде «Ваша учетная запись будет выписана через X минут из-за неактивности. Чтобы сохранить свою сессию, нажмите здесь ». Затем кнопка будет делать другой запрос AJAX, чтобы сохранить сеанс в случае необходимости. Если запрос сделан и срок действия сеанса истек, вы можете автоматически перенаправить пользователя обратно в систему. –
Не было бы лучше для пользователя, если единственное действие, требуемое для входа в систему, было бы активным на странице? –
Это правда, однако сеанс хранится на сервере, в то время как активность пользователя исключительно на стороне клиента. Именно здесь AJAX будет использоваться для соединения двух. –