新聞中心

在同一個(gè)系統(tǒng)上,多個(gè)頁面之間互相切換時(shí),還能保持用戶的登錄狀態(tài),并且訪問的都是用戶自己的信息。這種能夠在網(wǎng)站中跟蹤一個(gè)用戶,并且可以處理在同一個(gè)網(wǎng)站中同一個(gè)用戶在多個(gè)頁面共享數(shù)據(jù)的機(jī)制,都需要使用會(huì)話控制的思想完成。
為什么要使用會(huì)話控制
我們?cè)跒g覽網(wǎng)頁時(shí),訪問每一個(gè) Web 頁面都需要使用到“http 協(xié)議”,而 HTTP 協(xié)議是無狀態(tài)協(xié)議,也就是說 HTTP 協(xié)議沒有一個(gè)內(nèi)建機(jī)制來維護(hù)兩個(gè)事務(wù)之間的狀態(tài)。當(dāng)一個(gè)用戶請(qǐng)求一個(gè)頁面以后,再請(qǐng)求同一個(gè)網(wǎng)站上的另外一個(gè)頁面時(shí),HTTP 協(xié)議不能告訴我們這兩個(gè)請(qǐng)求是來自同一個(gè)用戶,會(huì)被當(dāng)做獨(dú)立的請(qǐng)求,而并不會(huì)將這兩次訪問聯(lián)系在一起,如下圖所示。
圖:用戶連續(xù)請(qǐng)求 Web 服務(wù)器中的多個(gè)頁面
上圖中,如果某網(wǎng)站的用戶通過瀏覽器請(qǐng)求 Web 服務(wù)器中的“網(wǎng)頁一”時(shí),該頁面會(huì)經(jīng)由服務(wù)器處理以后動(dòng)態(tài)地將內(nèi)容響應(yīng)到瀏覽器。由于 HTTP 協(xié)議的無狀態(tài)性,當(dāng)用戶通過“網(wǎng)頁一”中的鏈接,或直接在地址欄中輸入 Web 服務(wù)器 URL 來請(qǐng)求本站的其他網(wǎng)頁時(shí),會(huì)被看做是和前一次毫無關(guān)系的連接,和使用者相關(guān)的資料并不會(huì)自動(dòng)傳遞到新請(qǐng)求的頁面中。例如,在第一個(gè)頁面中登錄了一次,再轉(zhuǎn)到同一個(gè)網(wǎng)站的其他頁面時(shí),如果還想使用該用戶的身份訪問,則必須再重復(fù)執(zhí)行登入的動(dòng)作,因?yàn)?HTTP 協(xié)議是無狀態(tài)的,不能在不同頁面之間跟蹤用戶。
會(huì)話控制的思想就是允許服務(wù)器跟蹤同一個(gè)客戶端做出的連續(xù)請(qǐng)求。這樣,我們就可以很容易地做到用戶登錄的支持,而不是在每瀏覽一個(gè)網(wǎng)頁都去重復(fù)執(zhí)行登入的動(dòng)作。當(dāng)然,使用會(huì)話控制除了可以在同一個(gè)網(wǎng)站中跟蹤 Web 用戶之外,對(duì)同一個(gè)訪問者的請(qǐng)求還可以在多個(gè)頁面之間為其共享數(shù)據(jù)。
會(huì)話控制的方式
由于 HTTP 是無狀態(tài)的協(xié)議,所以不能維護(hù)兩個(gè)事務(wù)之間的狀態(tài)。PHP 系統(tǒng)為了防止這種情況的發(fā)生,提供了如下三種網(wǎng)頁之間傳遞數(shù)據(jù)的方法。
- 使用超鏈接或者 header() 函數(shù),并在 URL 的 GET 請(qǐng)求中附加參數(shù)的形式,將數(shù)據(jù)從一個(gè)頁面轉(zhuǎn)向另一個(gè) PHP 腳本中。也可以通過網(wǎng)頁中的各種隱藏表單來儲(chǔ)存使用者的資料,并將這些信息在提交表單時(shí)傳遞給服務(wù)器中的 PHP 腳本;
- 使用 Cookie 將用戶的狀態(tài)信息存放在瀏覽器中,并通過瀏覽器來存取 Cookie 中的信息;
- 相對(duì)于 Cookie 還可以使用 Session,將訪問者的狀態(tài)信息存放于服務(wù)器之中,讓其他程序能透過服務(wù)器中的文件或數(shù)據(jù)庫,來存取使用者的信息。
在上面三種網(wǎng)頁間數(shù)據(jù)的傳遞方式之中,使用 URL 或表單的方式主要是用來處理參數(shù)的傳遞或是多條信息的輸入,適合于兩個(gè)腳本之間的簡單數(shù)據(jù)傳遞。例如,通過表單修改或刪除數(shù)據(jù)時(shí),可以將數(shù)據(jù)對(duì)應(yīng)的 ID 傳遞給其他腳本。
如果需要傳遞的數(shù)據(jù)比較多,頁面?zhèn)鬟f的次數(shù)比較頻繁,或者是需要傳遞數(shù)組時(shí),使用 URL 或表單就有些煩瑣了。特別是在項(xiàng)目中跟蹤一個(gè)用戶時(shí),要為不同權(quán)限的用戶提供不同的動(dòng)態(tài)頁面,需要每個(gè)頁面都知道現(xiàn)在的用戶是誰,對(duì)于這種情況我們通常選用 Cookie 和 Session 技術(shù)。
當(dāng)前文章:PHP會(huì)話控制簡述
分享路徑:http://m.5511xx.com/article/dhdiooe.html


咨詢
建站咨詢
