2012-01-28 192 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