什麼是Session呢? Session直接翻譯成中文比較困難,一般都譯成時域。在電腦專業術語中,Session是指一個終端使用者與互動系統進行通訊的時間間隔,通常指從註冊進入系統到註銷退出系統之間所經過的時間。具體到Web中的Session指的就是使用者在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是使用者瀏覽這個網站所花費的時間。因此從上述的定義中我們可以看到,Session其實是一個特定的時間概念。
需要注意的是,一個Session的概念需要包含特定的客戶端,特定的伺服器端以及不中斷的操作時間。 A用戶和C伺服器建立連線時所處的Session同B用戶和C伺服器中建立連線時所處的Sessions是兩個不同的Session。
那什麼是Session的解決方案呢?我們知道,使用者造訪一個網站時往往需要瀏覽許多網頁。對於一個透過PHP建構的網站來說,使用者在造訪的過程中需要執行許多的PHP腳本。然而由於HTTP協定本身的特點,使用者每執行一個PHP腳本都需要和Web伺服器重新建立連線。又由於無狀態記憶的特點,此次連接無法得到上次連接的狀態。這樣,使用者在一個PHP腳本中對一個變數進行了賦值操作,而在另一個PHP腳本中卻無法得到這個變數的值。例如,使用者在負責登入的PHP腳本中設定了$user="wind",卻無法在另一個PHP腳本中透過呼叫$user來獲得「wind」這個值。也就是說,在PHP中無法設定全域變數。每個PHP腳本中所定義的變數都是只在這個腳本內有效的局部變數。
Session解決方案,就是要提供在PHP腳本中定義全域變數的方法,使得這個全域變數在同一個Session中對於所有的PHP腳本都有效。上面我們提到了,Session不是一個簡單的時間概念,一個Session中也包含了特定的使用者和伺服器。因此更詳細地講,在一個Session定義的全域變數的作用範圍,是指這個Session所對應的使用者所存取的所有PHP。
例如A使用者透過Session定義了一個全域變數$user=「wind」中,而B使用者透過Session定義的全域變數$user=「jane」。那麼在A用戶所存取的PHP腳本中,$user的值就是wind。