新聞中心

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


咨詢
建站咨詢
