当浏览器退出时,防止php会话过期


Keep php session from expiring when browser is quit

我正在处理一个PHP会话。它运行得很好,除非我退出浏览器然后返回网页,否则会话已经过期。如何防止这种情况/设置会话的过期时间?

您可以更改session.cookie_lifetime的配置,这样浏览器就不会在会话关闭时丢弃会话的cookie(只需给它几秒钟时间,它就会设置过期日期)。。。

// assuming you can't change your php.ini file
ini_set('session.cookie_lifetime', 3600); // one hour

但是,你希望会议能持续多久?因为您需要担心的另一个配置设置是session.gc_maxlifetime,它设置(同样以秒为单位)会话数据在被视为垃圾之前允许存在多长时间(我认为是不变的?)。

session.gc_maxlifetime的默认值为1440秒,即大约24分钟。

考虑上述安全风险。为了延长会话寿命,您可以在启动会话之前设置会话cookie的生存期,如下所示。

                     $lifetime=60*60*24*14;   //2 weeks in seconds. you can change the time as you wish
                     session_set_cookie_params($lifetime, '/');
                     session_start();