2013-11-21 97 views
8

我似乎無法在網上找到明確的答案,所以我在這裏問。什麼時候PHP會話結束?

當在.php腳本中使用session_start();並保存一些值時,會話何時結束?那麼什麼時候這些值不能再次訪問?

我發現刷新頁面或以代碼方式停止會話會阻止它,並且可能的超時也會停止會話。但是,如何從網站導航並在一分鐘後返回?並關閉瀏覽器?

至於最後一個,在手機上,'關閉瀏覽器'是什麼意思?關閉標籤或甚至簡化網站?

+0

簡短的答案取決於瀏覽器。 –

+0

可能取決於您的服務器配置 – Carlos487

回答

5

如果您的會話值沒有鏈接到任何cookie,會話將在Windows瀏覽器關閉時結束。

如果您的會話變量來自cookie,會話將在cookie文件中指定的時間後結束。

在PHP中,會話使用類型爲session的cookie。服務器端,會話信息不斷刪除。

要設置在PHP一個cookie的壽命,可以使用函數session_set_cookie_params中,在session_start之前:

session_set_cookie_params(3600,"/"); 
session_start(); 

對於離3600秒是一小時,2小時,3600×2 = 7200

但是它是一個會話cookie,瀏覽器可以讓它自己過期,如果你想保存更長的會話(比如記住登錄),你需要將數據保存在服務器端和客戶端的標準cookie中。

使用cookie時從站點導航不會中斷會話。

1

有可以有效地結束會話兩件事情:

  1. 將其鏈接到瀏覽器中的Cookie會被破壞。 PHP通常使用會話cookie。這些在瀏覽器關閉時被刪除。 瀏覽器,而不是標籤。他們也可以手動刪除。
  2. 當服務器在一段時間內(在session.gc_maxlifetime中定義)沒有收到來自瀏覽器的具有會話會話cookie的請求並清除會話數據時。