PHP中,SESSION何時會消失?


只要使用者登入一次,如果 server 端永遠保存 session 的內容,那使用者不就永遠不用登入了。
但是.... 事實上卻不是如此!
因為 session 並不是永遠都存在著,只要 session 一消失,程式讀不到 session 的內容,自然會再要求使用者登入。
session 有一個「生存期限」。那麼,session 在什麼情況下會消失呢?
  • 關閉瀏覽器並重新開啟後,session 就會消失
  • session 生存期限到時後,session 自動消失

PHP 預設是將瀏覽器關閉並重新開啟後,session 就自行消失,也就是 session 的 lifetime 為 0。
其實我們可以自己設定 session 的生存期限,當生存期限到期時,session 就會自動消失,而不管瀏覽器是不是被關閉並重新開啟。
什麼場合需要重設 session 的生存期限呢?例如,我們希望使用者在 30 分鐘後重新登入,我們就可以設定 session 的生存期限為 10 分鐘。
要設定 session 的生存期限,只要修改 php.ini 設定即可:
session.cookie_lifetime = 0 (default value in php7)
修改這個設定項目即可。session lifetime 的預設值為 0。也就是將瀏覽器關閉並重新開啟後 session 才消失。只要將這個值改成我們要的時間即可,單位是秒:
session.cookie_lifetime = 1800 (s)
設定 session 在 1800 秒後自動消失。

留言

這個網誌中的熱門文章

7-ELEVEN 電子發票明細查詢方式

Java 使用 regular expression 正則表達,過濾特殊字元,反斜線處理重點