明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

session全圖文說明教程(一)

[摘要]一、session概述 session是什么,剛開始我也不明白,非專業(yè)詞典翻譯為會議,會議期。作個不太恰當(dāng)?shù)谋扔靼?(雖然不恰當(dāng),但意義卻是一樣的),session是你和網(wǎng)站之間的感情。 session在WEB技術(shù)中占有非常重要的份量。由于網(wǎng)頁是一種無狀態(tài)的連接程序,因此你無法得知用戶的...
一、session概述

session是什么,剛開始我也不明白,非專業(yè)詞典翻譯為會議,會議期。作個不太恰當(dāng)?shù)谋扔靼?
(雖然不恰當(dāng),但意義卻是一樣的),session是你和網(wǎng)站之間的感情。 session在WEB技術(shù)中占有非常重要的份量。由于網(wǎng)頁是一種無狀態(tài)的連接程序,因此你無法得知用戶的瀏覽狀態(tài)。因此我們必須
通過session記錄用戶的有關(guān)信息,以供用戶再次以此身份對web服務(wù)器提供要求時作確認(rèn),例
如,我們在某些網(wǎng)站中常常要求用戶登錄, 但我們怎么知道用戶已經(jīng)登錄了呢,如果沒有session的話,登錄信息是無法保留的,那豈不要讓用戶在每一頁網(wǎng)頁中都要提供用戶名和密碼。


當(dāng)然,session不光用于用戶身份認(rèn)證功能,還可能用于其它方面,以后我們會提到的。 session用中文來解釋就是會話期。一個會話期開始于用戶輸入一個站點的網(wǎng)址時,結(jié)束于他離開這個站點時。session最早出現(xiàn)在動態(tài)腳本語言Active Server Pages中,它的功能之強大,是一句話無法說清楚的。


當(dāng)php還在3.0版本時,session是它永遠的痛。雖然php具有執(zhí)行速度快,使用靈活,功能強大等優(yōu)點,但因為session的問題,使很多站點的開發(fā)放棄了php,至少我的老板是這樣認(rèn)為的。當(dāng)時有很多php免費函數(shù)庫提供在php3上實現(xiàn)session的方案,但都讓人感覺不正宗。就好象你花好幾千大洋買的手機卻配置一個很粗糙的草作的袋子一樣,雖然功能是一樣的,但總讓人覺得別扭。php4的出現(xiàn)讓php在session問題上有了翻身的機會。雖然它的session實現(xiàn)還不是很理想(主要是效率問題),但畢竟是它自己實現(xiàn)的,而且可以實際使用了。 那我們用session干什么呢,你說了半天,我用不上的話,你豈不有賣紙張之嫌。OK,我們來看看session有什么用:作過網(wǎng)站的人都有這樣的體會,在一頁頁面中的變量(在本章都指服務(wù)器端變量,下同)是不能在下一頁中用的,雖然有一些辦法可以實現(xiàn),比如用form,urlstring等等,但有些對于用戶來說是不方便的,即使讓form自動提交,但其中的延時在現(xiàn)今的網(wǎng)絡(luò)狀況下足以讓人窒息,而這兩種方法都明顯加大程序員的負(fù)擔(dān)。如果你正在開發(fā)一個大型項目,那這些額外的負(fù)擔(dān)是不能忽略的。而有了session就好辦了,session中注冊的變量可以作為全局變量使用。什么,全局變量? 好極了。這樣一來,你知道有什么用了吧:最主要的用于用戶身份認(rèn)證,程序狀態(tài)記錄,頁面之間參數(shù)傳遞。


說了它這么半天的好處,你已經(jīng)動心了吧,先別高興,它還有缺點呢:它是用文件保存的變量(當(dāng)然效率不高了,雖然可以用別的方式,但很麻煩的),不能保存對象。與之相對的是,asp中的session可以保存對象變量,用內(nèi)存變量來保存session變量。但為什么我們還選用php呢,呵呵, 為什么,你能從本書的開始看到這章,想必你也應(yīng)該明白了吧,你還不明白,F(xiàn)aint,你再從頭看起吧,我保證你成為PHP專家^_^。


session是怎樣實現(xiàn)的呢?呵呵,你一定以為很高深吧,我來告訴你它的秘密。如果說只保存變量的話,很多讀者都明白,這是很簡單的,但前面我們說過,http協(xié)議是一種無狀態(tài)的連接,你怎么知道那個變量是誰的,這個變量又是誰的呢?在session實現(xiàn)中用cookie實現(xiàn)的。cookie存在于客戶端,也就是用戶的機器中,里面保存著用戶的session ID,也就是session號碼,當(dāng)用戶的瀏覽器請求服務(wù)器時把session ID也一起送到服務(wù)器,這樣服務(wù)器就可以識別你是誰,也就可以把變量識別開了。這樣我們就不難理解了,為什么有時session會失效了。不信的話,你可以試試: 在IE的"工具"菜單上有"Internet選項"菜單,打開后再選"安全"->"自定義級別",將安全設(shè)置中的"允許使用每個對話cookies"設(shè)為禁用,再看看session能不能用。這下明白了吧!不過php4在linux/unix平臺上可以自動檢查cookies狀態(tài),當(dāng)cookies 不可用時,自動會把session ID附帶在url上進行傳遞。這是它在session方面比asp多的唯一的優(yōu)點了。