Session
在計(jì)算機(jī)中,尤其是在網(wǎng)絡(luò)應(yīng)用中,稱為“會(huì)話控制”。Session 對(duì)象存儲(chǔ)特定用戶會(huì)話所需的屬性及配置信息。這樣,當(dāng)用戶在應(yīng)用程序的 Web 頁(yè)之間跳轉(zhuǎn)時(shí),存儲(chǔ)在 Session 對(duì)象中的變量將不會(huì)丟失,而是在整個(gè)用戶會(huì)話中一直存在下去。
當(dāng)用戶請(qǐng)求來自應(yīng)用程序的 Web 頁(yè)時(shí),如果該用戶還沒有會(huì)話,則 Web 服務(wù)器將自動(dòng)創(chuàng)建一個(gè) Session 對(duì)象。當(dāng)會(huì)話過期或被放棄后,服務(wù)器將終止該會(huì)話。
注意 會(huì)話狀態(tài)僅在支持 cookie 的瀏覽器中保留。
會(huì)話實(shí)現(xiàn)原理
session會(huì)話的實(shí)現(xiàn)原理大概如下所示:
- 用戶A第一次進(jìn)入,沒有附帶任何標(biāo)識(shí)信息(通常是cookie)
- 服務(wù)端接收請(qǐng)求,給與用戶A一個(gè)會(huì)話標(biāo)識(shí)(通常是set_cookie,cookie值將加密)
- 服務(wù)端根據(jù)會(huì)話標(biāo)識(shí),在服務(wù)器本地存儲(chǔ)用戶信息
- 用戶A端獲取到會(huì)話標(biāo)識(shí),存儲(chǔ)到用戶端本地
- 用戶A第二次請(qǐng)求,附帶會(huì)話標(biāo)識(shí)(通常是cookie)
- 服務(wù)端通過會(huì)話標(biāo)識(shí),找到服務(wù)端相應(yīng)的用戶信息
php中的session
php已經(jīng)內(nèi)置封裝好了一個(gè)功能完整的會(huì)話管理,基礎(chǔ)用法為:
<?php
session_start();//啟動(dòng)新會(huì)話或者重用現(xiàn)有會(huì)話,發(fā)送set-cookie的響應(yīng)頭,告訴瀏覽器設(shè)置一個(gè)php_session的cookie 會(huì)話,會(huì)話id為php隨機(jī)產(chǎn)生,并在服務(wù)器端臨時(shí)目錄產(chǎn)生一個(gè)對(duì)應(yīng)的session文件
$_SESSION['a'] = 1;//存儲(chǔ)一個(gè)關(guān)于該會(huì)話id的值
session_destroy();//銷毀會(huì)話數(shù)據(jù)
//當(dāng)在腳本結(jié)束時(shí),會(huì)將超全局變量$_SESSION中的值存儲(chǔ)進(jìn)對(duì)應(yīng)的session文件
可自行搜索了解詳細(xì)內(nèi)容(如自定義session_id,自定義存儲(chǔ)方式,自定義啟用會(huì)話方式等)