2013-03-16 121 views
0

我已经在我的网站下面的代码:注销活动用户

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

如果我浏览我的网站,我有时会在两个小时后登出我的网站。例如,如果我提交表单,这非常令人沮丧。

我的问题是:我怎么能解决这个问题?仅当他处于INACTIVE状态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 2013-03-16 18:42:39

+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 2013-03-16 18:50:01

+0

P.S. ) – Mattios550 2013-03-16 18:50:46

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。 Jordy在功能方面可以吗? – Mattios550 2013-03-16 19:01:41

+0

+1我的回答好吗?有点厚脸皮,但嘿;) – Mattios550 2013-03-16 19:03:16

+0

明天我试试这个:)谢谢! – Jordy 2013-03-16 19:10:25