PHP基礎(chǔ)教程:COOKIE AND SESSION
來(lái)源:程序員人生 發(fā)布時(shí)間:2013-11-25 07:07:22 閱讀次數(shù):3628次
首先要明白以下幾個(gè)基本知識(shí):
1,瀏覽網(wǎng)頁(yè)使用的是HTTP協(xié)議
2,HTTP協(xié)議是無(wú)狀態(tài)的
3,整個(gè)過(guò)程是用戶發(fā)出請(qǐng)求,服務(wù)器接受請(qǐng)求,作出響應(yīng),斷開連接(無(wú)狀態(tài),不記錄該連接記錄)
4,HTTP協(xié)議包含協(xié)議頭和消息實(shí)體兩部分
5,Session在服務(wù)端,Cookie在客戶端
過(guò)程
1,用戶向服務(wù)器發(fā)送一個(gè)url請(qǐng)求。(GET /index.php HTTP/1.1)
2,服務(wù)器接受請(qǐng)求,在服務(wù)器上查找 index.php文件
3,根據(jù)該請(qǐng)?jiān)诜?wù)器端搜尋session_ID的文件按 一般在服務(wù)器的 %TEMP%文件夾下 如windows C:winnt emp下面創(chuàng)建一個(gè)如:sess_e12683c5301033a408419cc9df284f7b的文件 (window2000)
并將一些SESSION值保存在該文件里面
4,將處理結(jié)果返回給客戶端,并把該session_ID或者其它信息放在響應(yīng)的協(xié)議頭里面(set-Cookie),具體信息根據(jù)設(shè)置來(lái)確定,服務(wù)器斷開連接
5,客戶端接收,瀏覽器將協(xié)議頭里面的session_ID存放在客戶端的一個(gè)文件里(cookie)文件
在windows下一般在 C:Documents and Settings用戶名Local SettingsTemporary Internet Files下。
cookie的文件名一般為
Cookie:用戶名@dommain
Cookie文件的一般內(nèi)容為:
BAIDUID Cookie名稱
25D4E67AC34F467A29DB9B8C85C4DEC5 Cookie值
baidu.com/ Cookie有效路徑
1024 安全性 1024和1536表示模指數(shù)(MODP)群算法的位數(shù)
3577998080 Cookie有效日期
32067270 修改日期
1590083488 建立日期
29862897 建立者
6,客戶端第二次向服務(wù)器發(fā)送請(qǐng)求,瀏覽器會(huì)將對(duì)應(yīng)的cookie文件里面的值放在請(qǐng)求的協(xié)議頭里面
7,服務(wù)接受協(xié)議頭,同時(shí)也接受了cookie的值,這樣服務(wù)器就可以和已經(jīng)保存的session文件進(jìn)行驗(yàn)證
說(shuō)明
a,在上面的 3 步驟中,如果用戶還保存其它的session值,這些值作為內(nèi)容保存到那個(gè)session文件里面
b,在上面的 4 步驟中,服務(wù)還可以向客戶端發(fā)送更多的cookie值
c,在上面的 5 步驟中,如果用戶的瀏覽器拒絕cookie,那么有時(shí)候服務(wù)器會(huì)將session_ID作為url后面的參數(shù)附帶,所以我們常常看見有的url上常常會(huì)有 PHPSESSID=******** 或者JSPSESSID=******之類的參數(shù),如果瀏覽器接受cookie,也會(huì)將上面 b 中的更多參數(shù)放在cookie文件里面
d,在上面的 7 步驟中,服務(wù)器會(huì)根據(jù)session_ID查找對(duì)應(yīng)的文session文件,因此也可以根據(jù)該文件的內(nèi)容獲取先前保存的其它的session值
e,在服務(wù)器保存的session文件有時(shí)間限制
f,在客戶端保存的cookie文件有過(guò)期時(shí)間
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)