研究生入學(xué)考試交談期追蹤的Session與Cookies處理_第1頁
研究生入學(xué)考試交談期追蹤的Session與Cookies處理_第2頁
研究生入學(xué)考試交談期追蹤的Session與Cookies處理_第3頁
研究生入學(xué)考試交談期追蹤的Session與Cookies處理_第4頁
研究生入學(xué)考試交談期追蹤的Session與Cookies處理_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

10-1PHP的預(yù)定變數(shù)10-1-1PHP的預(yù)定變數(shù)10-1-2伺服器系統(tǒng)資訊的內(nèi)容10-1-1PHP的預(yù)定變數(shù)-說明PHP的預(yù)定變數(shù)屬於PHP引擎建立的變數(shù),HTTP通訊協(xié)定傳送的不只URL網(wǎng)址,在HTTP標(biāo)頭資訊擁有瀏覽程式版本、伺服器、Cookie、表單欄位資料等相關(guān)資訊。在PHP4.10之後版本提供一組結(jié)合陣列的預(yù)定變數(shù),可以取得PHP程式和HTTP標(biāo)頭的相關(guān)資訊,預(yù)設(shè)擁有全域的變數(shù)範(fàn)圍,稱為「自動全域」(Autoglobals)或「超全域」(Superglobals)變數(shù)。10-1-1PHP的預(yù)定變數(shù)-超全域變數(shù)10-1-2伺服器系統(tǒng)資訊的內(nèi)容-變數(shù)名稱10-1-2伺服器系統(tǒng)資訊的內(nèi)容-使用在PHP程式可以指定變數(shù)名稱的鍵值來取得指定的系統(tǒng)資訊:$ip=$_SERVER["REMOTE_ADDR"];$path=$_SERVER["SCRIPT_NAME"];PHP程式可以使用foreach迴圈顯示伺服器的所有變數(shù)值:foreach($_SERVERas$key=>$value){echo"<tr><td>".$key."</td>";echo"<td>".$value."</td></tr>";}鍵值10-2HTTP標(biāo)頭處理10-2-1轉(zhuǎn)址到其他網(wǎng)頁或PHP程式10-2-2定時更新網(wǎng)頁10-2-3設(shè)定輸出文件內(nèi)容的資料類型10-2-4設(shè)定在快取保留的期限10-2HTTP標(biāo)頭處理PHP的header()函數(shù)可以送出HTML文件的標(biāo)頭資訊,透過送出的標(biāo)頭資訊來轉(zhuǎn)址或定時更新網(wǎng)頁、指定文件內(nèi)容和保留期限。header()函數(shù)的說明:10-2-1轉(zhuǎn)址到其他網(wǎng)頁或PHP程式轉(zhuǎn)址功能是指在執(zhí)行PHP程式時,可以轉(zhuǎn)址到其他網(wǎng)址或網(wǎng)站的其他網(wǎng)頁或PHP程式,header()函數(shù)是使用Location型態(tài)來指定轉(zhuǎn)址的URL網(wǎng)址:header("Location:Ch10-1-2.php");header("Location:http://localhost/Ch09/Ch9-3-1.htm“);header("Location:");10-2-2定時更新網(wǎng)頁PHP的header()函數(shù)可以使用Refresh型態(tài)指定間隔時間來定時更新網(wǎng)頁:header("Refresh:2");如果在一定時間後轉(zhuǎn)址到其他URL網(wǎng)址或PHP檔案路徑,只需加上url參數(shù):header("Refresh:2;url=Ch10-1-2.php");間隔時間,此例是2秒10-2-3設(shè)定輸出文件內(nèi)容的資料類型-說明在header()函數(shù)可以使用Content-type型態(tài)指定HTTP通訊協(xié)定傳送資料到瀏覽程式的資料種類,其值是MIME資料類型,常用類型:10-2-3設(shè)定輸出文件內(nèi)容的資料類型-使用如果需要輸出成其他文件類型,可以使用header()函數(shù)指定MIME資料類型:header("Content-type:text/xml");XML文件10-2-4設(shè)定在快取保留的期限-說明雖然網(wǎng)站的PHP程式、HTML網(wǎng)頁和圖片等多媒體資料是儲存在Web伺服器,不過為了加速網(wǎng)頁存取,在伺服端、客戶端電腦或Proxy伺服器都會將網(wǎng)頁內(nèi)容保留在快取空間(Cache)的資料夾或磁碟,以便加速網(wǎng)頁的瀏覽。10-2-4設(shè)定在快取保留的期限-客戶端快取的說明在客戶端電腦啟動瀏覽程式瀏覽網(wǎng)頁時,網(wǎng)頁內(nèi)容同時會保留在客戶端電腦的資料夾,此資料夾是一個快取空間,可以加速網(wǎng)頁瀏覽。當(dāng)使用者重複瀏覽相同的網(wǎng)頁時,瀏覽程式先到快取找找看是否檔案已經(jīng)存在,如果有,就直接從快取取出網(wǎng)頁內(nèi)容,而不是每次都連結(jié)網(wǎng)站下載網(wǎng)頁內(nèi)容,如此可節(jié)省下載檔案時間,提高瀏覽效率。不過,為了保密、安全原因或希望每次都連結(jié)網(wǎng)站下載網(wǎng)頁內(nèi)容,我們並不希望將網(wǎng)頁內(nèi)容保留在客戶端快取,或是只允許保留一段時間,所以,我們需要設(shè)定PHP程式的保留期限。10-2-4設(shè)定在快取保留的期限-指定PHP程式的保留期限PHP程式可以使用header()函數(shù)指定Expires型態(tài)設(shè)定網(wǎng)頁檔案在快取保留的時間,時間是GMT格林威治時間:header("Expires:".gmdate("D,dMYH:i:s",

mktime(0,0,0,12,31,2006))."GMT");程式碼使用gmdate()函數(shù)取得GMT時間,mktime()函數(shù)指定日期/時間,以此例是:Sat,30Dec200616:00:00GMT。如果不想將PHP程式保留在快取,只需將Expires設(shè)為過去時間即可:header("Expires:Mon,26Jul200405:00:00GMT");10-3輸出緩衝區(qū)處理10-3-1為什麼使用輸出緩衝區(qū)10-3-2輸出緩衝區(qū)處理10-3-1為什麼使用輸出緩衝區(qū)-說明PHP的「輸出緩衝區(qū)」(OutputBuffer)是用來儲存PHP程式的輸出結(jié)果,其目的是等到執(zhí)行完P(guān)HP程式後,才一次送到瀏覽程式顯示。在PHP程式使用輸出緩衝區(qū)主要是針對使用header()或第10-4節(jié)的setcookie()函數(shù)會更改HTTP標(biāo)頭的情況,避免產(chǎn)生重複寫入標(biāo)頭資料的錯誤。10-3-1為什麼使用輸出緩衝區(qū)-圖例例如:更改程式範(fàn)例Ch10-2-1.php,刪除第1列的<?ob_start();?>設(shè)定不使用輸出緩衝區(qū)輸出網(wǎng)頁內(nèi)容,就可以測試轉(zhuǎn)址PHP程式碼時產(chǎn)生的錯誤:10-3-2輸出緩衝區(qū)處理-PHP的輸出緩衝區(qū)處理(說明)在PHP程式開啟輸出緩衝區(qū)可以在php.ini檔案指定output_buffering屬性為On或是使用PHP的函數(shù)來開啟,我們通常是使用PHP函數(shù)來開啟。PHP引擎在執(zhí)行PHP程式碼時,可以選擇將處理的結(jié)果馬上輸出到客戶端的瀏覽程式顯示,或是先輸出到暫放的輸出緩衝區(qū),等到PHP程式執(zhí)行完或是緩衝區(qū)已滿,才送到瀏覽程式顯示。10-3-2輸出緩衝區(qū)處理-PHP的輸出緩衝區(qū)處理(圖例)10-3-2輸出緩衝區(qū)處理-PHP的輸出緩衝區(qū)處理(圖例說明)PHP程式是使用ob_start()函數(shù)開啟輸出緩衝區(qū)。PHP程式在送到PHP引擎執(zhí)行後,可以直接將輸出內(nèi)容送到瀏覽程式顯示或是將輸出結(jié)果先輸出到緩衝區(qū),當(dāng)遇到下列情況才會將輸出的內(nèi)容送到瀏覽程式,:執(zhí)行完P(guān)HP程式後。執(zhí)行到ob_end_flush()、ob_flush()函數(shù)馬上將緩衝區(qū)的內(nèi)容送出。10-3-2輸出緩衝區(qū)處理-PHP輸出緩衝區(qū)處理函數(shù)PHP提供輸出緩衝區(qū)控制函數(shù)可以開啟、使用和關(guān)閉使用輸出緩衝區(qū),其相關(guān)函數(shù)的說明:10-4Cookies的處理10-4-1Cookies的基礎(chǔ)10-4-2新增Cookie10-4-3取得Cookie的內(nèi)容10-4-4刪除Cookie10-4-5陣列Cookie的使用10-4-1Cookies的基礎(chǔ)-說明在Web網(wǎng)站通常都需要保留一些使用者的瀏覽記錄,例如:使用者是否曾經(jīng)瀏覽過網(wǎng)站,或是一些個人輸入的資訊或選擇。Cookies就是儲存這些資料的主要解決方案之一。Cookies的英文是小餅乾的意義,源於這些儲存在客戶端電腦的檔案尺寸都很小,Cookies並不是儲存在伺服器,而是儲存在瀏覽程式所在電腦,所以並不會浪費伺服器資源。10-4-1Cookies的基礎(chǔ)-HTTP標(biāo)頭的Cookie資料(格式)伺服器回應(yīng)客戶端請求的HTTP回應(yīng)資料內(nèi)就含有HTTP標(biāo)頭資訊,HTTP標(biāo)頭提供回應(yīng)網(wǎng)頁檔案的重要資訊,內(nèi)含多種欄位資料,每個欄位的格式:field-name:field_value當(dāng)客戶端向伺服器提出請求時,在HTTP回應(yīng)資料的標(biāo)頭就會將設(shè)定Cookie資料的欄位送到客戶端:Set-Cookie:name=value;expires=date;path=pname;domain=dname;secure欄位名稱欄位值10-4-1Cookies的基礎(chǔ)-HTTP標(biāo)頭的Cookie資料(屬性說明)name屬性:Cookie的名稱,可以使用此名稱取出Cookie值和刪除Cookie。expires屬性:一個選項,可有可無,指定Cookie存在的有效期限,使用GMT的時間,其格式如下所示:Weekday,DD-MM-YYHH:MM:SSGMTdomain屬性:伺服器的網(wǎng)域名稱,預(yù)設(shè)是建立Cookie的伺服器網(wǎng)域名稱。path屬性:在domain屬性下的路徑名稱,path屬性可以進(jìn)一步在同一個網(wǎng)站分辨是哪一個網(wǎng)頁所建立的Cookies。secure屬性:如果指定此屬性,表示Cookie需要在保密情況下,才能在客戶端和伺服端傳送。10-4-1Cookies的基礎(chǔ)-

Cookie的基本應(yīng)用個人資訊:使用Cookies保留個人資訊,例如:姓名、地址、時區(qū)、帳號和是否曾經(jīng)進(jìn)過此網(wǎng)站的記錄。個人化的內(nèi)容:Cookies可以儲存?zhèn)€人化網(wǎng)站外觀和個人偏好的網(wǎng)站內(nèi)容,或是提供使用者有興趣的資訊。網(wǎng)站購物車:線上購物車需要保留使用者選擇的商品,Cookies就可以用來記錄選購的商品清單。10-4-2新增Cookie-語法PHP的Cookie是使用setcookie()函數(shù)建立:setcookie(stringname[,stringvalue[,intexpire[,stringpath[,stringdomain[,intsecure]]]]])Cookie值保留的客戶端的期限,其值是整數(shù)的UNIX時間刻記10-4-2新增Cookie-範(fàn)例在PHP程式建立Cookie主要使用setcookie()函數(shù)的前3個參數(shù):setcookie("Username",$name,$date);$date是Cookie檔案儲存在客戶端電腦的有效期限,其日期計算的運算式:$date=strtotime("+10days",time());Cookie名稱Cookie值時間刻記的整數(shù)值10-4-3取得Cookie的內(nèi)容客戶端電腦如果擁有Cookie,PHP程式可以使用$_COOKIE預(yù)定變數(shù)的結(jié)合陣列取得Cookie值:$user=$_COOKIE["Username"];$pass=$_COOKIE["Password"];10-4-4刪除Cookie如果客戶端的Cookie不再需要,PHP程式可以使用setcookie()函數(shù)刪除Cookie,刪除Cookie是將expire參數(shù)設(shè)為過期:setcookie("Username","",time()-3600);設(shè)定為1個小時前10-4-5陣列Cookie的使用-建立Cookie儲存的資料也可以是結(jié)合陣列,在PHP程式取得Cookie後,同一個Cookie名稱下還可以使用鍵值儲存多個值:setcookie("user[Name]","陳會安",time()+3600);setcookie("user[Username]","Joe",time()+3600);setcookie("user[Password]","1234",time()+3600);結(jié)合陣列有3個元素:Name、Username和Password,分別儲存使用者名稱、帳號和密碼10-4-5陣列Cookie的使用-取出因為Cookie是一個陣列,在取得陣列Cookie的值時,可以使用while迴圈配合list()和each()函數(shù)取得每一個鍵值的內(nèi)容:if(isset($cookie)){

while(list($name,$value)=each($cookie))echo"$name=$value<br>";}10-5PHP的交談期追蹤10-5-1PHP的Session基礎(chǔ)10-5-2交談期追蹤10-5-1PHP的Session基礎(chǔ)-說明若PHP程式啟動Session處理功能(交談期處理功能)。當(dāng)使用者進(jìn)入網(wǎng)站,PHP引擎就會自動指定SessionID編號建立一個新Session(交談期),Session(交談期)是指使用者第一次進(jìn)入網(wǎng)站,直到使用者離開網(wǎng)站為止的整個過程。Session類似儲存在客戶端的Cookie,它可以在伺服端保留一些資源來儲存Session變數(shù),PHP程式可以註冊不定數(shù)量的Session變數(shù),PHP事實上是使用檔案來儲存這些Session變數(shù)。10-5-1PHP的Session基礎(chǔ)-圖例當(dāng)這些變數(shù)註冊成為Session變數(shù)後,所有啟動Session處理功能的PHP程式都可以存取這些變數(shù)。如果同時有多位使用者進(jìn)入網(wǎng)站,因為每位使用者都會指定不同的SessionID編號,換句話說,每個人都可以擁有專屬的Session變數(shù):10-5-2交談期追蹤-說明交談期追蹤(SessionTracking)是一種機制,可以在一段時間內(nèi),讓網(wǎng)站維持一系列從同一位使用者提出(通常是指同一個瀏覽程式提出)請求的狀態(tài)保留機制,以便追蹤使用者的狀態(tài)。交談期追蹤和第9章的狀態(tài)管理十分相似,不過第9章的狀態(tài)管理是指如何將一頁PHP程式的狀態(tài)傳遞到下一頁PHP程式的方法,交談期追蹤強調(diào)的是使用者在整個Session交談期和跨過多頁PHP程式HTTP請求的狀態(tài)保留。10-5-2交談期追蹤-圖例PHP引擎實作交談期追蹤的方式是使用Session變數(shù),PHP引擎指定每一位瀏覽網(wǎng)站的使用者一個SessionID編號來作為識別,使用者每一次的HTTP請求都需附上SessionID編號,以便判斷是否是同一位使用者提出的請求:10-6Session的處理10-6-1註冊與存取Session變數(shù)10-6-2取消註冊Session變數(shù)與關(guān)閉Session10-6-3使用Session變數(shù)傳遞資料10-6-1註冊與存取Session變數(shù)-函數(shù)在PHP程式使用Session處理功能需要呼叫session_start()函數(shù),以便讓PHP引擎將Session變數(shù)等相關(guān)資訊載入記憶體,其相關(guān)函數(shù)的說明如下表所示:10-6-1註冊與存取Session變數(shù)-使用在PHP程式使用Session變數(shù)需要先註冊:session_register("page_counter");在註冊成為Session變數(shù)後,PHP程式就可以使用$_SESSION結(jié)合陣列的預(yù)定變數(shù)來取得指定的Session變數(shù):$_SESSION["page_counter"

溫馨提示

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

評論

0/150

提交評論