2012-11-15 75 views
2

我正在玩一辆禅车,我想要这样做,以便客户会话在24分钟后不会过期,这似乎是默认设置。会话超时时间 - 由服务器设置?

谷歌和谷歌搜索网站后,它似乎并没有任何人有答案(关于如何更改管理员注销会话时间的大量答案 - 我希望使用实际网站的人有更长的会议) 。我想这可能是一个安全的事情,没有少,我看着它现在想不通代码:

if (IS_ADMIN_FLAG === true) { 
    if (!$SESS_LIFE = (SESSION_TIMEOUT_ADMIN > 900 ? 900 : SESSION_TIMEOUT_ADMIN)) { 
     $SESS_LIFE = (SESSION_TIMEOUT_ADMIN > 900 ? 900 : SESSION_TIMEOUT_ADMIN); 
    } 
} else { 
    if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) { 
     $SESS_LIFE = 1440; 
    } 
} 

我试图改变1440到86400(一天),但似乎没有工作。我不完全确定这条线是什么

if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) { 

这样做!只有一个=之后。我猜这是问题所在?任何人都可以启发我吗?

+0

请确保您没有与其他网站共享您的会话目录。否则,使用最短'gc_maxlifetime'的网站可能会删除*全部*会话文件,甚至是您的。 –

+0

@alvaro谢谢,我认为现在更改代码只是更容易:) –

+0

你误会了我。如果您使用共享主机并且会话文件位于通用目录中,只需更改设置将毫无用处。这只是检查'phpinfo()'并在必要时更改'session.save_path'配置指令的问题。 –

回答

0
if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) { 
    $SESS_LIFE = 1440; 
} 

这得到的session.gc_maxlifetime从运行时配置的值,并将其设置为$SESS_LIFE

如果$SESS_LIFE值为零,则执行$SESS_LIFE = 1440;


更改此超时内:php.ini或使用

ini_set('session.gc_maxlifetime', 86400); 

或者在你的.htaccess,您可以添加行:

php_value session.gc_maxlifetime 86400 

参考:get_cfg_var,

+0

好的,我可以删除if语句并设置变量$ SESS_LIFE = 86400;不使用ini_set?我不确定是否允许我在活动服务器上更改ini_set中的内容,当然它可能会影响其他网站吗? –

+0

@crazysarah'session.gc_maxlifetime'可以在脚本中或通过'.htaccess'设置;真的不需要更改代码。 –

+0

@crazysarah正如杰克所说,你可以把它作为'php_value session.gc_maxlifetime 86400'在你的.htaccess中。 –