研究生入学考试交谈期追踪的Session与Cookies处理_第1页
研究生入学考试交谈期追踪的Session与Cookies处理_第2页
研究生入学考试交谈期追踪的Session与Cookies处理_第3页
研究生入学考试交谈期追踪的Session与Cookies处理_第4页
研究生入学考试交谈期追踪的Session与Cookies处理_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论