關(guān)于Session與Cookie的課件_第1頁
關(guān)于Session與Cookie的課件_第2頁
關(guān)于Session與Cookie的課件_第3頁
關(guān)于Session與Cookie的課件_第4頁
關(guān)于Session與Cookie的課件_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第11章 Session與CookieWeb應(yīng)用程序有一個(gè)很重要的特性就是可以記錄用戶的狀態(tài)。例如,在論壇中,當(dāng)用戶登錄之后,可以記錄用戶的登錄狀態(tài),甚至還能記錄當(dāng)前用戶所在的論壇版塊。要實(shí)現(xiàn)這樣的功能通常需要通過某種載體來保存此類信息。而最常使用的存儲(chǔ)載體有Session與Cookie兩種。本章將詳細(xì)講解如何在PHP中使用Session與Cookie。11.1 Session與Cookie簡介Session與Cookie都屬于會(huì)話處理機(jī)制范疇。在計(jì)算機(jī)編程中會(huì)話是一種面向連接的可靠通信方式,而會(huì)話處理機(jī)制就指編程語言實(shí)現(xiàn)基于會(huì)話的通信的方式。本節(jié)將向讀者介紹何為Session,什么是Cook

2、ie,以及這兩種會(huì)話處理機(jī)制的區(qū)別與聯(lián)系。通過本節(jié)內(nèi)容的學(xué)習(xí),讀者將會(huì)對Session與Cookie有一個(gè)大致的認(rèn)識。為后兩節(jié)具體學(xué)習(xí)Session與Cookie的實(shí)際使用,打下一個(gè)理論的基礎(chǔ)。11.1.1 什么是Session在計(jì)算機(jī)專業(yè)術(shù)語中,Session是指一個(gè)終端用戶與交互系統(tǒng)進(jìn)行通信的時(shí)間間隔,通常指從注冊進(jìn)入系統(tǒng)到注銷退出系統(tǒng)之間所經(jīng)過的時(shí)間。1Session的作用具體到Web中的Session指的就是用戶在瀏覽某個(gè)網(wǎng)站時(shí),從進(jìn)入網(wǎng)站到瀏覽器關(guān)閉所經(jīng)過的這段時(shí)間,也就是用戶瀏覽這個(gè)網(wǎng)站所花費(fèi)的時(shí)間。因此從上述的定義中可以看到,從其實(shí)質(zhì)上來說,Session實(shí)際是一個(gè)特定的時(shí)間概念

3、。2Session解決方案那什么是Session的解決方案呢?我們知道,用戶訪問一個(gè)網(wǎng)站時(shí)往往需要瀏覽許多網(wǎng)頁。對于一個(gè)通過PHP構(gòu)筑的網(wǎng)站來說,用戶在訪問的過程中需要執(zhí)行許多PHP腳本。然而由于HTTP協(xié)議自身的特點(diǎn),用戶每執(zhí)行一個(gè)PHP腳本都需要和Web服務(wù)器重新建立連接。11.1.2 什么是CookieCookie是當(dāng)用戶瀏覽某網(wǎng)站時(shí),網(wǎng)站存儲(chǔ)在客戶機(jī)器上的一個(gè)小文本文件。該文件記錄了用戶的用戶ID、密碼、瀏覽過的網(wǎng)頁、停留的時(shí)間等信息。當(dāng)用戶再次來到該網(wǎng)站時(shí),網(wǎng)站通過讀取Cookie,得知用戶的相關(guān)信息,就可以做出相應(yīng)的動(dòng)作。例如,在頁面顯示歡迎的標(biāo)語,或者可以使用用戶不用輸入ID、密

4、碼就直接登錄等等。使用Windows操作系統(tǒng)的用戶可以使用以下方法查看Cookie信息。(1)單擊IE瀏覽器的工具菜單下的Internet選項(xiàng)子菜單,打開Internet選項(xiàng)對話框。(2)單擊“常規(guī)”選項(xiàng)卡中的設(shè)置按鈕,將打開設(shè)置對話框。(3)單擊設(shè)置對話框中的查看文件按鈕,將會(huì)定位到保存Cookie的目錄以查看所有保存到電腦里的Cookie。Cookie文件通常是以userdomain格式命名的。user是你的本地用戶名,domain是所訪問的網(wǎng)站的域名。如果用戶使用NetsCape瀏覽器,Cookie則被存放在“C:PROGRAMFILESNETSCAPEUSERS”里面。與IE不同的是,

5、NETSCAPE是使用一個(gè)Cookie文件記錄所有網(wǎng)站的Cookies。11.1.3 Session和Cookie區(qū)別與聯(lián)系Session和Cookie都是會(huì)話處理機(jī)制。二者之間存在差別,但也有一定的聯(lián)系。本小節(jié)就來結(jié)合前兩小節(jié)介紹的內(nèi)容,具體分析二者的區(qū)別與聯(lián)系。Session與Cookie的共同點(diǎn)為:二者都同為會(huì)話處理機(jī)制,都可以用來存私密的東西,也同樣也都有有效期的概念。Session與Cookie的區(qū)別主要體現(xiàn)在以下幾個(gè)方面:Cookie數(shù)據(jù)存放在客戶的瀏覽器上,Session數(shù)據(jù)放在服務(wù)器上。Cookie不是很安全,別人可以分析存放在本地的Cookie并進(jìn)行Cookie欺騙。而Ses

6、sion由于保存在遠(yuǎn)程服務(wù)器上,相對比較安全??紤]到安全性應(yīng)當(dāng)使用Session。由于Session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)服務(wù)器的訪問增多時(shí),會(huì)占用服務(wù)器的性能??紤]到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用Cookie。單個(gè)Cookie在客戶端的限制是3K,就是說一個(gè)站點(diǎn)在客戶端存放的Cookie不能超過3K。而Session則沒有這方面的限制。Cookie的使用與瀏覽器的設(shè)置有關(guān),如果用戶禁用了Cookie則所有基于Cookie的應(yīng)用都將失敗。而Session則與客戶端的配置無關(guān),所以大可放心的使用而不必關(guān)心客戶端的配置情況。11.2 Session的使用通過上一節(jié)的介紹,讀者可以了解到Se

7、ssion是將數(shù)據(jù)存放于服務(wù)端的一種會(huì)話處理機(jī)制。使用Session可以增強(qiáng)用戶登錄注冊系統(tǒng)的安全性。本節(jié)將具體介紹在PHP中如何使用Session。11.2.1 如何使用Session在PHP中要使用Session可以分為:啟動(dòng)Session、注冊Session、調(diào)用Session以及關(guān)閉Session這幾步,本節(jié)將分別向讀者作介紹。1啟動(dòng)Session在使用Session前,首先需要使用函數(shù)session_start()來啟動(dòng)該Session。該函數(shù)的使用格式如下。bool session_start()2注冊SessionSession在啟動(dòng)之后,就可以通過函數(shù)session_regis

8、ter()來注冊Session變量。該函數(shù)的語法格式如以下代碼所示。bool session_register(mixed name, mixed . )3調(diào)用Session如果php的配置沒有開啟register_globals(自動(dòng)全局變量開關(guān)),則只可以用_SESSION數(shù)組來引用Session變量。例如,var只能這樣引用$_SESSIONvar,而如果開啟了register_globals選項(xiàng),則可以直接用$var。4關(guān)閉Session如果Session不再需要使用時(shí),可以通過函數(shù)session_destroy()來關(guān)閉一個(gè)Session。此時(shí)該Session必須是已經(jīng)開啟的。該函數(shù)

9、的使用格式如以下代碼所示。bool session_start()11.2.2 檢查指定變量是否為Session由于定義Session方式的不同,判斷Session的方法頁不盡相同。下面分別講解兩種常用的檢查方法。1以函數(shù)定義的Session的判斷方法當(dāng)Session使用session_register()定義時(shí),應(yīng)該使用session_is_registered()函數(shù)進(jìn)行檢查。該函數(shù)的使用格式如以下代碼所示。bool session_is_registered(string name)2使用$_SESSION直接賦值的Session的判斷方法如果Session使用了$_SESSION這樣的

10、賦值形式直接,需要使用isset()函數(shù)來判斷指定變量是否定義。bool isset(mixed var,mixed var,. )11.2.3 獲取或者設(shè)置Session的保存路徑在PHP中不僅可以對Session進(jìn)行通常的操作,也可以通過函數(shù)對有關(guān)Session的配置情況進(jìn)行讀寫操作。在使用Session時(shí)其保存路徑就是一個(gè)相當(dāng)重要的信息,即php.ini中的session.save_path。如果該選項(xiàng)配置不當(dāng),將直接導(dǎo)致Session不能使用。要想獲取或者設(shè)置Session的保存路徑,可以通過函數(shù):session_save_path()來實(shí)現(xiàn),該函數(shù)使用格式如下所示。string se

11、ssion_save_path(string path)11.2.4 釋放Session變量在使用Session結(jié)束后,出于安全性及節(jié)約系統(tǒng)資源的考慮可以將Session中的某一個(gè)或者全部Session釋放。Session的注冊方法不同,則其注銷(釋放)方法也同。本節(jié)分別為讀者作介紹。1以函數(shù)定義的Session的注銷方法如果采用session_register()注冊的函數(shù),需要用函數(shù):session_unregister()進(jìn)行注銷。該函數(shù)的使用格式如下代碼所示。bool session_unregister(string name)2使用$_SESSION直接賦值的Session的注銷方

12、法采用直接給$_SESSION變量賦值的形式來注冊的Session,在注銷時(shí)也需要使用函數(shù):unset()。在使用unset()時(shí)需要注意,只需要把指定變量作為參數(shù)即可,如:unset($_SESSIONname)。而不需要把$_SESSION作為參數(shù),因?yàn)檫@樣將把所有Session全部注銷。11.3 Cookie的使用在PHP中使用Cookie可以簡單分為:注冊Cookie與引用Cookie這兩步。注冊Cookie就是定義Cookie變量;而引用Cookie即實(shí)際調(diào)用Cookie變量。本節(jié)將詳細(xì)為讀者介紹這兩部分內(nèi)容。11.3.1 注冊Cookie在PHP中要把某個(gè)變量注冊為Cookie,只

13、需要通過調(diào)用函數(shù):setcookie()即可實(shí)現(xiàn)。該函數(shù)的使用格式如下代碼所示。bool setcookie(string name,string value,int expire,string,path,string domain,bool secure,bool httponly)該函數(shù)將定義一個(gè)Cookie全局變量并伴隨HTTP頭信息一起發(fā)送。在使用此函數(shù)時(shí)需要特別注意:該函數(shù)前不能有任何的輸出內(nèi)容,包括HTML標(biāo)記。即使是代碼中多出的空格也是不允許的。所以,如果要使用此函數(shù),建議將其放在腳本的第一行。函數(shù)將會(huì)返回一個(gè)布爾值,如果成功發(fā)送則返回True,反之則返回False。函數(shù)各個(gè)參數(shù)

14、及其含義如表所示。11.3.2 引用Cookie注冊Cookie后,就可以引用所注冊的Cookie。在前面章節(jié)中曾提及一個(gè)自動(dòng)全局變量$_COOKIE。該變量為用戶已經(jīng)注冊的Cookie數(shù)組。而調(diào)用相關(guān)的Cookie值就是調(diào)用該數(shù)組元素。具體操作如下:如果已經(jīng)定義了一個(gè)名為:user的Cookie值。則在調(diào)用時(shí)就使用$_COOKIEuser這樣的形式即可。下面的代碼實(shí)現(xiàn)了對已經(jīng)定義的Cookie值的調(diào)用:11.3.3 為Cookie設(shè)定生命期通常的Cookie都有生命期即存在時(shí)間。一過生命期,Cookie就會(huì)被自動(dòng)刪除。當(dāng)然用戶也可以手動(dòng)刪除,Cookie直接結(jié)束Cookie的生命期。例如,在

15、論壇登錄系統(tǒng)中,經(jīng)常需要設(shè)定用戶的登錄有效期。本節(jié)就來介紹下如何為Cookie設(shè)置生命期。在11.3.1小節(jié)中介紹setcookie()函數(shù)時(shí)提到函數(shù)的第三個(gè)參數(shù):expire。該參數(shù)即是為Cookie設(shè)定的過期時(shí)間,以秒作為計(jì)量單位。比如在使用setcookie()時(shí)當(dāng)把該參數(shù)設(shè)為:3600,則所注冊的Cookie將后在注冊一小時(shí)后失效。如果省略該參數(shù),則Cookie只在瀏覽器打開時(shí)有效,一旦關(guān)閉瀏覽器窗口,所設(shè)置的Cookie就會(huì)失效。另外,把expire設(shè)置為過去的時(shí)間,如time()-1,則Cookie也會(huì)在瀏覽器關(guān)閉時(shí)失效。下面通過實(shí)例來說明如何為Cookie設(shè)定生命期。11.3.4 Cookie使用實(shí)例本節(jié)來介紹一個(gè)非常實(shí)用的PHP使用Cookie的實(shí)例。該實(shí)例實(shí)現(xiàn)通過Cookie來改變網(wǎng)站的風(fēng)格布局這樣的功能。用戶在瀏覽一些網(wǎng)站或者論壇時(shí),會(huì)發(fā)現(xiàn)有些此類網(wǎng)站提供有類似軟件的換膚功能。該功能的實(shí)現(xiàn)一方面依靠CSS(Cascading Style Sheets,層疊樣式表技術(shù)),另一方面也需要結(jié)合Cookie來實(shí)現(xiàn)。本節(jié)就通過一個(gè)實(shí)例來說明,如何在PHP中使用CSS樣式表和Cookie來實(shí)現(xiàn)網(wǎng)頁(站)的換膚功能。在使用此代碼前先建立如下幾個(gè)CSS樣式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論