2013-03-16 2 views
0

У меня есть следующий код на моем сайте:Выхода неактивного пользователя

session_set_cookie_params(7200, '.website.com', '', false, true); 

Если я просматриваю мой сайт, иногда я буду логау мой сайт после двух часов. Например, если я представляю форму, и это очень расстраивает.

Мой вопрос: как я могу решить эту проблему? Можно ли выйти из системы только тогда, когда он НЕАКТИВНО в течение 2 часов? И каково должно быть первое значение тайм-аута session_set_cookie_params?

ответ

1

Попробуйте это:

$_SESSION['loginTime'] = time(); 
if($_SESSION['loginTime'] < time()+120*60){ logoutfunction(); } 

120 часть 120 минут вы указали (2 часа). Вы можете быть очень умны и спросить пользователя, как долго они хотят ждать, прежде чем они выйдут из системы: D

Вам также необходимо заменить logoutfunction(); тем, что вы хотите, если пользователь должен выйти из системы (возможно использование session_destroy(); header("Location: http://yourwebsite.com/login.php");)

Пожалуйста, дайте мне знать, если вам нужна дополнительная помощь с этим :)

+0

Спасибо! И какое значение должен дать первый параметр session_set_cookie_params()? – Jordy

+0

Я рад, что это помогло :) К сожалению, я не знаком с 'session_set_cookie_params();'. Изучив это, что-то вроде этого? 'session_set_cookie_params (7400, '.website.com', '', false, true):' Я выбрал 7400, потому что это 200 секунд после истечения срока действия. Поэкспериментируйте с разным временем и посмотрите, что работает :) Вы можете попробовать 'session_set_cookie_params (0, '.website.com', '', false, true),' потому что это когда браузер закрывается. Я бы попробовал это. – Mattios550

+0

P.S. вы всегда можете отметить как выбранный ответ;) – Mattios550

0

вы должны сохранить в сессии фактическое время последнего посетителя двигаться на своем сайте.

Войти Функция:

login_user(); 
save_actual_time_in_session(); 

, когда пользователь вошел в систему, для каждой загрузки страницы сделать:

check_if_time_in_session_is_expired(); // if so, do some action, e.g. redirect to login form 
save_actual_time_in_session(); 

(@ решение Mattios550 не будет работать, потому что при каждом запросе HTTP является loginTime значение сессия обновлена ​​до фактического времени, чтобы она никогда не заканчивалась ...)

+0

Да, хорошо, спасибо @aslancz. Джорди, ты в порядке с аспектом функций? – Mattios550

+0

+1 ответьте мне пожалуйста? Немного нахальный, но эй;) – Mattios550

+0

Я пробую это завтра :) Спасибо! – Jordy

Смежные вопросы