新聞中心
Session的中文是會話的意思,在Web編程中Session代表服務(wù)器與客戶端之間的“會話”,意思是服務(wù)器與客戶端在不斷的交流。 在PHP中,使用$_SESSION[]可以存儲特定用戶的Session信息。并且每個用戶的Session信息都是不同的。 當(dāng)用戶請求網(wǎng)站中任意一個頁面時,若用戶未建立Session對象,則服務(wù)器會自動為用戶創(chuàng)建一個Session對象,它包含唯一的SessionID和其他Session變量,并保存在服務(wù)器內(nèi)存中,不同用戶的Session對象存著各自指定的信息。

Session 簡介
Session 在 Web 技術(shù)中占有非常重要的地位。由于網(wǎng)頁是一種無狀態(tài)的連接程序,無法記錄用戶的瀏覽狀態(tài),所以需要通過 Session 來記錄用戶的有關(guān)信息,以供用戶再次以這個身份對 Web 服務(wù)器發(fā)起請求。
Session 中文是“會話”的意思,與 Cookie 類似,都是用來儲存使用者相關(guān)資料的,比如用戶名、訪問權(quán)限、登陸時間等。與 Cookie 最大不同之處在于 Cookie 是將資料存放于客戶端電腦之中,而 Session 則是將數(shù)據(jù)存放于服務(wù)器系統(tǒng)之下。
當(dāng)開啟一個 Session 時,PHP 將會創(chuàng)建一個隨機的 Session ID(例如“t5is1r7ct740dn390kuv3mpcse”),每個用戶的 Session ID 都是唯一的,而且 Session ID 與服務(wù)器上存儲該用戶 Session 數(shù)據(jù)的文本文件名稱相同。
Session ID 會分別保存在客戶端和服務(wù)器端兩個位置。
客戶端,使用臨時的 Cookie 保存在瀏覽器指定目錄中,Cookie 名稱默認(rèn)為“PHPSESSID”;
服務(wù)器端,以文本文件形式保存在指定的 Session 目錄中。
默認(rèn)情況下,這個 Session ID 將作為一個 Cookie 發(fā)送給 Web 瀏覽器,接下來 PHP 頁面將使用這個 Cookie 來訪問 Session 的信息。
與 Cookie 相比,Session 擁有以下的優(yōu)勢:
通常情況下 Session 更加安全,因為 Session 中的數(shù)據(jù)不會在客戶端和服務(wù)器端來回重復(fù)傳遞;
Session 能夠存儲比 Cookie 更多的信息;
在用戶禁用 Cookie 的情況下,使用一些方法任然能保持 Session 正常工作。
Session 的工作原理
我們可以使用 PHP 腳本創(chuàng)建和存儲 Session 中的數(shù)據(jù)。在創(chuàng)建一個 Session 后,所有 Session 變量在用戶一次會話期間里訪問的所有頁面都有效。其工作機制如下圖所示。
Session 的存儲方式
Session 默認(rèn)會以文本的形式存儲在服務(wù)器的臨時目錄中,文件名以“sess_”作為前綴,后面加上“Session ID”,例如“sess_t5is1r7ct740dn390kuv3mpcse”。
我們可以在 php.ini 中找到 Session 的相關(guān)配置,下面是一些常用的配置信息:
session.save_handler = files #session 的存儲方式,默認(rèn)是文件,還可以是 redis 或者是 memcache
session.save_path = "d:/wamp/tmp" #session 文件的存儲目錄
session.use_cookies = 1 #是否使用 cookie 存儲 session_id
session.name = PHPSESSID #客戶端存儲 session_id 的會話名
session.auto_start = 0 #是否自動開啟 session
session.cookie_lifetime = 0 #設(shè)置客戶端中存儲的 session_id 的過期時間,以秒為單位
session.use_only_cookies=0 #是否只使用 cookie 來處理 session_id
session.gc_divisor = 1000 #進程比率
session.gc_probability = 1 #垃圾回收的處理幾率
session.gc_maxlifetime = 1440 #設(shè)置 session 文件的過期時間
Session 的生命周期
Session 在以下情況會被刪除,也就是失效:
Session 超時,超時指的是連續(xù)一定時間服務(wù)器沒有收到該 Session 所對應(yīng)客戶端的請求,并且這個時間超過了服務(wù)器設(shè)置的 Session 超時的最大時間;
程序調(diào)用方法主動銷毀 Session;
服務(wù)器關(guān)閉或服務(wù)停止。
當(dāng)前名稱:PHP中Session的具體使用方法
當(dāng)前地址:http://m.fisionsoft.com.cn/article/cdojehs.html


咨詢
建站咨詢
