Новое и улучшенное решение
Как указал г-н Кеннеди, мое оригинальное решение (ниже) не работает. так вот способ сделать это.
В базе данных пользователей хранится отметка времени последней активности, которая обновляется каждый раз, когда пользователь загружает страницу.
Тогда в checkaccess.php
if ( time-last_access > max_inactivity_time ) {
return array('access' => '0');
}
else {
return array('access' => '0');
}
Вызовите checkaccess.php в таймере JavaScript (ниже) и выйдите из системы соответственно
Это также позволяет использовать функцию «авторизованные пользователи»
спасибо, мистер Кеннеди
Оригинальный нерабочий раствор
Создать страницу php, которая возвращает 1 или 0 в зависимости от действительности текущего сеанса пользователя.
Затем на ваших страницах, для которых вы хотите установить тайм-аут, добавьте это в заголовок (вам нужен jquery)
setInterval(function(){
var url = UrL_OF_SESSION_CHECKING_PAGE;
$.getJSON( url,
function( data ) {
if (data.access=='0') {
window.location = LOGIN_PAGE;
}
}
);
}, 180000);
Каждые 180 секунд (3 минуты) он запрашивает страницу php и получает достоверность сеанса. Если он недействителен, он перенаправляет на страницу входа
Если у пользователя открыто несколько страниц, страницы будут отключаться и перенаправляться в разное время, потому что их таймеры разные.
Вот хорошая страница о таймерах javscript
http://ejohn.org/blog/how-javascript-timers-work/
Страница проверки простого сеанса
session_start();
die(
json_encode(
isset( $_SESSION['VARIABLE'] ) ? array( 'access' => '1') : array( 'access' => '0' )
)
);
замените VARIABLE на одну из переменных сеанса