session_start和session.gc_maxlifetime问题

时间:2014-03-26 08:12:16

标签: php session session-timeout

我想设置session.gc_maxlifetime。但是超时的值本身就在会话中。 我尝试使用下面的代码,但它确实无效。

session_start();

//Do some database and session operations

ini_set( 'session.gc_maxlifetime', $_SESSION['timeout'] );

session_start();

2 个答案:

答案 0 :(得分:0)

如果您尝试通过会话超时设置session.gc_maxlifetime,我想这种方法是完全错误的,

这是因为会话设置应该在会话开始之前定义。

试试这个 -

$timeout=$_SESSION['timeout']

$old_session_id = session_id();

# write and close current session
session_write_close();


ini_set('session.gc_maxlifetime', $timeout);

# now we can switch the session over, capturing the old session name
$old_session_name = session_name($session_name);
session_id($session_id);
session_start();

# get the desired session data
$session_data = $_SESSION;

答案 1 :(得分:0)

我使用以下代码实现了这一目标。

$arrMixTempSession = $_SESSION;
session_destroy();

ini_set('session.gc_maxlifetime', $_SESSION['timeout'] * 60 );
session_start();

$_SESSION = $arrMixTempSession;