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