Немного пересмотрел мой ответ, потому что вы уже упомянули тайм-аут на стороне сервера ...
Единственное, что вы можете сделать на стороне клиента, - это использовать событие onbeforeunload для вызова страницы выхода из системы (если пользователь не щелкнул ссылку в документе ..)
К сожалению, кнопки браузера назад, вперед и обновления приведут к выходу из системы ...
Чтобы обойти это, проследите, чтобы ваш logout.php (страница автоматического выхода из системы) спал в течение 20-30 секунд, а затем проверьте, было ли последнее впечатление менее 30-45 секунд назад, прежде чем выходить из него…
Просто добавьте это к тегам скрипта в заголовке вашего документа и измените 'logout.php' на то, что вы хотите ... * Вам также может понадобиться отредактировать функцию window.onload, чтобы правильно добавить обработчики onclick, если для навигации вы используете что-то кроме ссылок ...
var xmlhttp=false; var target; var combo;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } }
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
var dologout = true;
var logouturl = 'logout.php';
window.onbeforeunload = function() {
if (dologout) {
xmlhttp.open("POST", logouturl, true);
xmlhttp.send(null);
}
}
window.onload = function() {
for (i=0;i<document.links.length;i++)
document.links[i].setAttribute("onclick","dologout = false;");
}
По сути, это просто присоединяет событие onclick ко всем document.links и меняет флаг 'dologout' на false, если была нажата ссылка на документ ...
Если флаг dologout имеет значение true при возникновении события onbeforeunload, он отправляет сообщение в 'logouturl' / 'logout.php' ...