cookie給了2小時,這兩個小時不關你有沒有動作,到時間他都會到期,而且session是只要你有動作或重新整理頁面他都不會到期對嗎?對嗎,我測了COOKIE是這樣的
回複內容:
cookie給了2小時,這兩個小時不關你有沒有動作,到時間他都會到期,而且session是只要你有動作或重新整理頁面他都不會到期對嗎?對嗎,我測了COOKIE是這樣的
首先你要搞明白 session 、cookie之間的關係。
因為http協議是無狀態的,所以2個http請求之間是沒有任何聯絡。
但是很多時候的業務需求是需要知道2個http請求之間是要進行資訊共用的,這就是session的由來。
因為http協議是無狀態的,所以需要有資訊共用的2個http請求中帶上一個session標誌,通過這個session標誌,可以把上個請求的資訊在下次請求時擷取出來,通常是把session標誌儲存到cookie中(當然你也可以把這個標誌放到url參數中或者放在請求header中)。
因此session到期不到期,完全取決於某個請求時是否有session標誌,而這個session標誌的相應的session資訊是否還在伺服器保留。
基於問題回答
cookie給了2小時,這兩個小時不關你有沒有動作,到時間他都會到期
你說的沒錯,前提是你沒有更改儲存在cookie中seesion標誌的到期時間
而且session是只要你有動作或重新整理頁面他都不會到期對嗎?
這個更新的伺服器儲存session資訊的時間,即
在服務端session到期時間 = 上次更新session資訊的時間 + 設定的到期時間
調用session_start方法後,伺服器會返回給用戶端一個sessionid,用戶端(一般是瀏覽器)會在每一次請求伺服器的時候帶上這個sessionid,伺服器就是根據這個sessiond來找到對應的回話儲存記錄的。
所以“session是只要你有動作或重新整理頁面他都不會到期”
這個不全對,雖然看上去是這樣。但是如果用戶端清除了sessionid(例如關閉瀏覽器),或者伺服器清除掉了對應的session回話記錄(在設定的到期時間內沒有接收到請求),都會導致session到期
所謂session也是服務端產生一個id然後作為cookie儲存在使用者本地,服務端這個cookie作為一個唯一值key儲存在資料庫。
session會自己處理到期時間的問題,比如只要有請求,自動重新設定一次cookie(到期時間就又延後了好多)