1. 程式人生 > >php會話控制(總結)

php會話控制(總結)

1.什麼是SESSION?

在web中的session指的就是使用者在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是使用者瀏覽這個網站所花費的時間。從這個角度上看,session是一個特定的時間概念。

例如:好比我們兩個人對話,從開始對話到結束對話,所經歷的這段時間就稱之為會話。

2.為什麼使用SESSION?

(1)因為http協議是無狀態的協議。即同一個客戶端的本次請求和上次請求沒有對應關係,http伺服器並不知道這兩個請求來自同一個客戶端。

那http協議又是怎麼個回事呢?

    所謂http協議其實是短連線的,也就是說當你第一次請求時,伺服器對此做出了響應,但是客戶端與伺服器端就已經斷開了。第二次傳送請求時就得重新連線,web客戶端沒有辦法知道它們是否來自於同一個請求。

使用SESSION的優缺點:

    優點:減輕伺服器的壓力。         缺點:每次請求會傳輸大量重複的內容資訊。

(2)session是基於http伺服器的用於保持狀態的方法。

(3)session允許通過將資料儲存在http伺服器中,在整個使用者會話過程中儲存該資料,所以session不僅是一個時間概念,還包括了特定的使用者和伺服器。

3.SESSION的工作原理(如下圖)


(1)由一個唯一識別符號標識,session_id函式能夠讀取此識別符號。

(2)會話識別符號(sessionID)存在2份,一份在伺服器上存在對應的session檔案,一份返回到客戶端以便於第二次請求,其作用就是表名身份。

(3)啟用會話狀態時,其會檢查每個頁面請求是否有瀏覽器傳送的sessionID值,如果沒有,則就會開啟一個新的會話,並將該會話的sessionID值隨響應一起傳送到瀏覽器;預設情況下,sessionID值儲存在cookie中;也可以實現在URL中儲存sessionID.

sessionID好比是鑰匙而cookie好比是鎖頭。

(4)一直使用相同的sessionID值傳送請求,會話就被視為活動的;如果該會話請求時間超過指定的時間,則該會話視為已過期。使用過期的sessionID值傳送的請求將生成一個新的會話。