« 93. PHP 要如何使用 session? | (回到Blog入口) | Jollen's PHP 專欄說明 »

94. 關於 session 的生存期限

jollen 發表於 October 27, 2006 10:14 PM

大家可能會有一個疑問,那就是,只要使用者登入一次後,如果 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

版權聲明

請參閱頁面底部的 CC 授權條款。此外,Jollen's PHP 專欄禁止引用、修改與轉貼,如果您想與朋友分享的話,我們只允許網站連結(hyperlink)的形式。

發表一個評論

(如果你此前從未在此 Blog 上發表過評論,則你的評論必須在 Blog 主人驗證後才能顯示,請你耐心等候。)

| Top | Jollen's Forum |
Jollen's PHP 專欄採用 Attribution-NonCommercial-NoDerivs 2.5 授權條款
Copyright(c) 2001-2007,2010 www.jollen.org