2010-01-19 71 views
0

当用户闲置3小时时,如何设置会话过期。当用户闲置3小时时,会话将过期。 php

切切实实的,这是重复的问题,

但其他线程不为我工作,

我曾尝试高达现在的问题是,

<code> 
define("APP_SESSION_TIMEOUT","10"); 
session_cache_expire(APP_SESSION_TIMEOUT); 
session_set_cookie_params(APP_SESSION_TIMEOUT*60); 
ini_set("session.gc_maxlifetime", APP_SESSION_TIMEOUT * 60); 
</code> 

//不是这个代码是我config.php文件

我没有发现,在我上面的代码..任何提示成功,

我maked在我的代码中的任何错误,


嗨我不知道,我的代码是正确的,

但我仍然有一个问题,

正在逐渐confussion,

click here

我的要求是当系统处于活动状态3小时,然后登录会自动去注销,(即会话过期,当sy干是活跃3小时)

但我的代码,而不是goign到期模式,

我已经尝试财产以后像

ini_set('session.cookie_lifetime', 10800);
ini_set('session.gc_maxlifetime', 10800);

没有运气还是.....


我不确定,确切的错误在哪里,但最后,

昨晚我解决了问题,

这里是代码click here

+3

请花一些时间来学习使用StackOverflow的标记语法的正确方法。如果值得花时间回答你的问题,那么值得你花时间学习如何使用该网站。 – 2010-01-19 03:58:49

+0

Markdown链接:http://stackoverflow.com/editing-help – 2010-01-19 04:03:41

+0

你的pastebin链接不好。 – Will 2010-12-17 14:07:54

回答

0

灭活会议恰好三个小时后试着从你的PHP代码中调用

ini_set('session.cookie_lifetime', 10800); 

+0

嗨有可能检查我的回复.. – Bharanikumar 2010-01-20 07:36:09

0

如果你有机会到php.ini文件,你可以在里面设置。如果你不这样做(我怀疑是这种情况),你需要创建一个指示会话开始的会话变量,并不断用当前时间戳更新该变量。然后在每次访问时,将会话变量与当前时间戳进行比较,如果差异大于3小时,请调用session_destroy()。

+0

仅当系统空闲时,这种更改才会起作用? – Bharanikumar 2010-01-19 04:13:34

+0

您将不得不使用时间戳进行比较。如果每次用户进行操作时都更新时间戳,那么会话时间戳和发布时间戳的差异将成为衡量非活动状态的一个好方法。此外,它可以通过上下文嵌入到AJAX调用中,因此您可以将“空闲”定义为页面帖子之间的时间以外的内容。击键甚至可以使用,如果你想去粒度(我不会)。 – 2010-01-19 12:41:33

1

此代码:

session_set_cookie_params(APP_SESSION_TIMEOUT*60); 

可能不是你想要的。由于APP_SESSION_TIMEOUT也被定义为一个字符串,所以你的乘积是“10”* 60.这也只会达到600秒(即使PHP正确计算)。

这样做:

session_set_cookie_params(3600 * 3); // 3600 seconds (one hour) * 3 
session_start(); 

这应该设置最大。会议时间为三小时。