session全教程(一)
--------------------------------------------------------------------------------
一、session概述
session是什麼,剛開始我也不明白,非專業詞典翻譯為會議,會議期。作個不太恰當的比喻吧
(雖然不恰當,但意義卻是一樣的),,session是你和網站之間的感情。
session在WEB技術中佔有非常重要的份量。由於網頁是一種無狀態的連接程序,因此你無法得知
用戶的瀏覽狀態。因此我們必須
通過session記錄用戶的有關信息,以供用戶再次以此身份對web服務器提供要求時作確認,例
如,我們在某些網站中常常要求用戶登錄,
但我們怎麼知道用戶已經登錄了呢,如果沒有session的話,登錄信息是無法保留的,那豈不要讓
用戶在每一頁網頁中都要提供
用戶名和密碼。
當然,session不光用於用戶身份認證弁遄A還可能用於其它方面,以後我們會提到的。
session用中文來解釋就是會話期。一個會話期開始於用戶輸入一個站點的網址時,結束於他離開
這個站點時。
session最早出現在動態腳本語言Active Server Pages中,它的弁鄐妤j大,是一句話無法說清
楚的。
當php還在3.0版本時,session是它永遠的痛。雖然php具有執行速度快,使用靈活,弁鈺j大等
優點,但因為session的問題,使
很多站點的開發放棄了php,至少我的老闆是這樣認為的。當時有很多php免費函數庫提供在php3上
實現session的方案,但都讓人感覺不正宗。
就好像你花好幾千大洋買的手機卻配置一個很粗糙的草作的袋子一樣,雖然弁酮O一樣的,但總
讓人覺得彆扭。php4的出現讓php在session問題上
有了翻身的機會。雖然它的session實現還不是很理想(主要是效率問題),但畢竟是它自己實現
的,而且可以實際使用了。
那我們用session幹什麼呢,你說了半天,我用不上的話,你豈不有賣紙張之嫌。OK,我們來看看
session有什麼用:作過網站的人都有
這樣的體會,在一頁頁面中的變量(在本章都指服務器端變量,下同)是不能在下一頁中用的,雖
然有一些辦法可以實現,比如用form,urlstring等等
但有些對於用戶來說是不方便的,即使讓form自動提交,但其中的延時在現今的網絡狀況下足以
讓人窒息,而這兩種方法都明顯加大程序員的負擔。如果你
正在開發一個大型項目,那這些額外的負擔是不能忽略的。而有了session就好辦了,session中
註冊的變量可以作為全局變量使用。什麼,全局變量?
好極了。這樣一來,你知道有什麼用了吧:最主要的用於用戶身份認證,程序狀態記錄,頁面之間
參數傳遞。
說了它這麼半天的好處,你已經動心了吧,先別高興,它還有缺點呢:它是用文件保存的變量(當
然效率不高了,雖然可以用別的方式,但
很麻煩的),不能保存對象。與之相對的是,asp中的session可以保存對像變量,用內存變量來保
存session變量。但為什麼我們還選用php呢,呵呵,
為什麼,你能從本書的開始看到這章,想必你也應該明白了吧,你還不明白,Faint,你再從頭看起
吧,我保證你成為PHP專家^^。
session是怎樣實現的呢?呵呵,你一定以為很高深吧,我來告訴你它的秘密。如果說只保存變量
的話,很多讀者都明白,這是很簡單的,
但前面我們說過,http協議是一種無狀態的連接,你怎麼知道那個變量是誰的,這個變量又是誰的
呢?在session實現中用cookie實現的。cookie
存在於客戶端,也就是用戶的機器中,裡面保存著用戶的session ID,也就是session號碼,當用
戶的瀏覽器請求服務器時把session ID也一起送到
服務器,這樣服務器就可以識別你是誰,也就可以把變量識別開了。這樣我們就不難理解了,為什
麼有時session會失效了。不信的話,你可以試試:
在IE的"工具"菜單上有"Internet選項"菜單,打開後再選"安全"->"自定義級別",將安全設置中
的"允釣洏峔C個對話cookies"設為禁用,再看看
session能不能用。這下明白了吧!不過php4在linux/unix平台上可以自動檢查cookies狀態,當
cookies 不可用時,自動會把session ID
附帶在url上進行傳遞。這是它在session方面比asp多的唯一的優點了。
一、session概述
session是什麼,剛開始我也不明白,非專業詞典翻譯為會議,會議期。作個不太恰當的比喻吧
(雖然不恰當,但意義卻是一樣的),,session是你和網站之間的感情。
session在WEB技術中佔有非常重要的份量。由於網頁是一種無狀態的連接程序,因此你無法得知
用戶的瀏覽狀態。因此我們必須
通過session記錄用戶的有關信息,以供用戶再次以此身份對web服務器提供要求時作確認,例
如,我們在某些網站中常常要求用戶登錄,
但我們怎麼知道用戶已經登錄了呢,如果沒有session的話,登錄信息是無法保留的,那豈不要讓
用戶在每一頁網頁中都要提供
用戶名和密碼。
當然,session不光用於用戶身份認證弁遄A還可能用於其它方面,以後我們會提到的。
session用中文來解釋就是會話期。一個會話期開始於用戶輸入一個站點的網址時,結束於他離開
這個站點時。
session最早出現在動態腳本語言Active Server Pages中,它的弁鄐妤j大,是一句話無法說清
楚的。
當php還在3.0版本時,session是它永遠的痛。雖然php具有執行速度快,使用靈活,弁鈺j大等
優點,但因為session的問題,使
很多站點的開發放棄了php,至少我的老闆是這樣認為的。當時有很多php免費函數庫提供在php3上
實現session的方案,但都讓人感覺不正宗。
就好像你花好幾千大洋買的手機卻配置一個很粗糙的草作的袋子一樣,雖然弁酮O一樣的,但總
讓人覺得彆扭。php4的出現讓php在session問題上
有了翻身的機會。雖然它的session實現還不是很理想(主要是效率問題),但畢竟是它自己實現
的,而且可以實際使用了。
那我們用session幹什麼呢,你說了半天,我用不上的話,你豈不有賣紙張之嫌。OK,我們來看看
session有什麼用:作過網站的人都有
這樣的體會,在一頁頁面中的變量(在本章都指服務器端變量,下同)是不能在下一頁中用的,雖
然有一些辦法可以實現,比如用form,urlstring等等
但有些對於用戶來說是不方便的,即使讓form自動提交,但其中的延時在現今的網絡狀況下足以
讓人窒息,而這兩種方法都明顯加大程序員的負擔。如果你
正在開發一個大型項目,那這些額外的負擔是不能忽略的。而有了session就好辦了,session中
註冊的變量可以作為全局變量使用。什麼,全局變量?
好極了。這樣一來,你知道有什麼用了吧:最主要的用於用戶身份認證,程序狀態記錄,頁面之間
參數傳遞。
說了它這麼半天的好處,你已經動心了吧,先別高興,它還有缺點呢:它是用文件保存的變量(當
然效率不高了,雖然可以用別的方式,但
很麻煩的),不能保存對象。與之相對的是,asp中的session可以保存對像變量,用內存變量來保
存session變量。但為什麼我們還選用php呢,呵呵,
為什麼,你能從本書的開始看到這章,想必你也應該明白了吧,你還不明白,Faint,你再從頭看起
吧,我保證你成為PHP專家^^。
session是怎樣實現的呢?呵呵,你一定以為很高深吧,我來告訴你它的秘密。如果說只保存變量
的話,很多讀者都明白,這是很簡單的,
但前面我們說過,http協議是一種無狀態的連接,你怎麼知道那個變量是誰的,這個變量又是誰的
呢?在session實現中用cookie實現的。cookie
存在於客戶端,也就是用戶的機器中,裡面保存著用戶的session ID,也就是session號碼,當用
戶的瀏覽器請求服務器時把session ID也一起送到
服務器,這樣服務器就可以識別你是誰,也就可以把變量識別開了。這樣我們就不難理解了,為什
麼有時session會失效了。不信的話,你可以試試:
在IE的"工具"菜單上有"Internet選項"菜單,打開後再選"安全"->"自定義級別",將安全設置中
的"允釣洏峔C個對話cookies"設為禁用,再看看
session能不能用。這下明白了吧!不過php4在linux/unix平台上可以自動檢查cookies狀態,當
cookies 不可用時,自動會把session ID
附帶在url上進行傳遞。這是它在session方面比asp多的唯一的優點了。