大家可能會有一個疑問,那就是,只要使用者登入一次後,如果 server 端永遠保存 session 的內容,那使用者不就永遠不用登入了嗎?答案是:對的。
但是事實上卻不是如此,因為 session 並不是永遠都存在著,只要 session 一消失,程式讀不到 session 的內容,自然會再要求使用者登入。
也就是說,session 有一個「生存期限」,當生存期限過了之後,session 自然會消失。那麼,session 在什麼情況下會消失呢?當底下幾種情況發生時,session 就會消失:
1. 關閉瀏覽器並重新開啟後,session 就會消失
2. session 生存期限到時後,session 自動消失
PHP 預設是將瀏覽器關閉並重新開啟後,session 就自行消失,也就是 session 的 lifetime 為0。
其實我們可以自己設定 session 的生存期限,當生存期限到期時,session 就會自動消失,而不管瀏覽器是不是被關閉並重新開啟。
什麼場合需要重設 session 的生存期限呢?例如,我們希望使用者在 10 分鐘後重新登入,我們就可以設定 session 的生存期限為 10 分鐘。
要設定 session 的生存期限,只要修改 php.ini 設定即可:
session.cookie_lifetime = 0
修改這個設定項目即可。session lifetime 的預設值為 0,也就是將瀏覽器關閉並重新開啟後 session 才消失。只要將這個值改成我們要的時間即可,單位是秒:
session.cookie_lifetime = 600
設定 session 在 600 秒後自動消失。
--jollen