2012-01-28 146 views
0

我正在使用PHP会话。它运行良好,除非我退出浏览器然后返回到网页,会话已过期。我该如何防止/为会话设置过期时间?保持php会话在浏览器退出时不会失效

+2

也许您正在寻找[session.cookie_lifetime](http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime)配置设置? – sdleihssirhc 2012-01-28 23:11:28

+0

@sdleihssirhc:我会与'session.gc_maxlifetime'结合使用它的答案...... – Wrikken 2012-01-28 23:16:24

+0

当浏览器会话结束时(即浏览器关闭),服务器端会话将过期。如果您想要存储超出该信息的一些信息,则不应使用服务器端会话。 – Gumbo 2012-01-28 23:20:46

回答

2

您可以更改的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分钟。

1

考虑到上述安全风险。要延长会话生存期,您可以在启动会话之前设置会话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(); 
+0

浏览器关闭后,会话cookie是否终止? – tim 2012-01-29 00:57:29