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

下载本文档

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

文档简介

1、第10章 交談期追蹤的Session與Cookies處理10-1 PHP的預定變數10-2 標頭處理10-3 輸出緩衝區處理10-4 Cookies的處理10-5 PHP的交談期追蹤10-6 Session的處理10-1 PHP的預定變數10-1-1 PHP的預定變數10-1-2 伺服器系統資訊的內容10-1-1 PHP的預定變數-說明PHP的預定變數屬於PHP引擎建立的變數, 通訊協定傳送的不只URL網址,在 標頭資訊擁有瀏覽程式版本、伺服器、Cookie、表單欄位資料等相關資訊。在PHP 4.10之後版本提供一組結合陣列的預定變數,可以获得PHP程式和 標頭的相關資訊,預設擁有全域的變數範

2、圍,稱為自動全域Autoglobals或超全域Superglobals變數。10-1-1 PHP的預定變數-超全域變數超全域變數超全域變數說明說明$GLOBALS在 PHP 3 就已經存在,包含目前 PHP 程式所有全域變數,鍵值是全域變數的名稱$_SERVERWeb 伺服器指定的變數,屬於目前 PHP 程式執行環境的相關變數,詳見第 10-1-2 節的說明$_GET結合陣列儲存透過 HTTP GET 方法傳入 PHP 程式檔案的表單欄位資料,鍵值是欄位名稱,例如:程式範例 Ch9-2-4.php$_POST結合陣列儲存透過 HTTP POST 方法傳入 PHP 程式檔案的表單欄位資料,鍵值是

3、欄位名稱,詳見第 9 章$_COOKIE結合陣列儲存透過 HTTP 傳遞的 Cookie 資料,詳見第 10-4 節$_FILES結合陣列儲存使用 HTTP POST 方法上傳檔案的相關資訊,詳見第11 章的說明$_ENV結合陣列儲存 PHP 執行時或 CGI 的環境變數$_REQUEST結合陣列儲存$_GET、$_POST、$_COOKIE 和$_FILES 變數的內容。請注意!從 PHP 4.3.0 版開始,$_FILES 變數已經不存在$_REQUEST 變數$_SESSION結合陣列儲存目前 PHP 程式擁有的 Session 變數,詳見第 10-6 節的說明10-1-2 伺服器系統資

4、訊的內容-變數名稱變數名稱變數名稱說明說明GATEWAY_INTERFACE伺服端 CGI 版本PHP_SELF目前執行 PHP 程式的檔案名稱DOCUMENT_ROOT目前執行 PHP 程式的根目錄QUERY_STRINGURL 參數的資料REMOTE_ADDR客戶端的 IP 位址REMOTE_PORT客戶端與主機連線的埠號REQUEST_METHODHTTP 的請求方法為 GET、PUT 或 POSTSCRIPT_NAME目前執行的 PHP 程式所在的虛擬路徑SCRIPT_FILENAME目前執行的 PHP 程式所在的實際路徑SERVER_NAME伺服器的網域名稱或 IP 位址SERVER

5、_PORTHTTP 通訊協定的埠號SERVER_PROTOCOLHTTP 通訊協定的版本SERVER_SOFTWARE使用的伺服器軟體和版本10-1-2 伺服器系統資訊的內容-使用在PHP程式可以指定變數名稱的鍵值來获得指定的系統資訊:$ip = $_SERVERREMOTE_ADDR;$path = $_SERVERSCRIPT_NAME;PHP程式可以使用foreach迴圈顯示伺服器的所有變數值:foreach $_SERVER as $key=$value echo . $key . ; echo . $value . ;10-2 標頭處理10-2-1 轉址到其他網頁或PHP程式10-2

6、-2 定時更新網頁10-2-3 設定輸出文件內容的資料類型10-2-4 設定在快取保存的期限10-2 標頭處理PHP的header函數可以送出HTML文件的標頭資訊,透過送出的標頭資訊來轉址或定時更新網頁、指定文件內容和保存期限。header函數的說明:函數函數說明說明header(string , bool ) 傳回第 1 個參數的 HTTP 標頭資料,預設取代前一個標頭中相同型態的資料,如果第 2 個參數為 false,表示允許多個同型態的資料10-2-1 轉址到其他網頁或PHP程式轉址功能是指在執行PHP程式時,可以轉址到其他網址或網站的其他網頁或PHP程式,header函數是使用Loc

7、ation型態來指定轉址的URL網址:headerLocation: Ch10-1-2.php;headerLocation: localhost/Ch09/Ch9-3-1.htm“;headerLocation: ;10-2-2 定時更新網頁PHP的header函數可以使用Refresh型態指定間隔時間來定時更新網頁:headerRefresh: 2;假如在一定時間後轉址到其他URL網址或PHP檔案路徑,只需加上url參數:headerRefresh:2;url=Ch10-1-2.php;10-2-3 設定輸出文件內容的資料類型-說明在header函數可以使用Content-type型態指定

8、 通訊協定傳送資料到瀏覽程式的資料種類,其值是MIME資料類型,常用類型:MIME 資料類型資料類型說明說明text/htmlHTML 文件檔案text/xmlXML 文件的檔案text/plain一般文字檔image/jpegJPEG 格式的圖片檔image/gifGIF 格式的圖片檔10-2-3 設定輸出文件內容的資料類型-使用假如需要輸出成其他文件類型,可以使用header函數指定MIME資料類型:headerContent-type: text/xml;10-2-4 設定在快取保存的期限-說明雖然網站的PHP程式、HTML網頁和圖片等多媒體資料是儲存在Web伺服器,不過為了加速網頁存取

9、,在伺服端、客戶端電腦或Proxy伺服器都會將網頁內容保存在快取空間Cache的資料夾或磁碟,以便加速網頁的瀏覽。10-2-4 設定在快取保存的期限-客戶端快取的說明在客戶端電腦啟動瀏覽程式瀏覽網頁時,網頁內容同時會保存在客戶端電腦的資料夾,此資料夾是一個快取空間,可以加速網頁瀏覽。當使用者重複瀏覽一样的網頁時,瀏覽程式先到快取找找看是否檔案已經存在,假如有,就直接從快取取出網頁內容,而不是每次都連結網站下載網頁內容,如此可節省下載檔案時間,进步瀏覽效率。不過,為了保密、平安原因或希望每次都連結網站下載網頁內容,我們並不希望將網頁內容保存在客戶端快取,或是只允許保存一段時間,所以,我們需要設定

10、PHP程式的保存期限。10-2-4 設定在快取保存的期限-指定PHP程式的保存期限PHP程式可以使用header函數指定Expires型態設定網頁檔案在快取保存的時間,時間是GMT格林威治時間:headerExpires: . gmdateD, d M Y H:i:s, mktime0,0,0,12,31,2006. GMT ;程式碼使用gmdate函數获得GMT時間,mktime函數指定日期/時間,以此例是:Sat, 30 Dec 2006 16:00:00 GMT。假如不想將PHP程式保存在快取,只需將Expires設為過去時間即可:headerExpires: Mon, 26 Jul 2

11、004 05:00:00 GMT;10-3 輸出緩衝區處理10-3-1 為什麼使用輸出緩衝區10-3-2 輸出緩衝區處理10-3-1 為什麼使用輸出緩衝區-說明PHP的輸出緩衝區Output Buffer是用來儲存PHP程式的輸出結果,其目的是等到執行完PHP程式後,才一次送到瀏覽程式顯示。在PHP程式使用輸出緩衝區主要是針對使用header或第10-4節的setcookie函數會更改 標頭的情況,防止產生重複寫入標頭資料的錯誤。10-3-1 為什麼使用輸出緩衝區-圖例例如:更改程式範例Ch10-2-1.php,刪除第1列的設定不使用輸出緩衝區輸出網頁內容,就可以測試轉址PHP程式碼時產生的錯

12、誤: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引擎執行後,可以直接將輸

13、出內容送到瀏覽程式顯示或是將輸出結果先輸出到緩衝區,當遇到以下情況才會將輸出的內容送到瀏覽程式,:執行完PHP程式後。執行到ob_end_flush、ob_flush函數馬上將緩衝區的內容送出。10-3-2 輸出緩衝區處理-PHP輸出緩衝區處理函數PHP提供輸出緩衝區控制函數可以開啟、使用和關閉使用輸出緩衝區,其相關函數的說明:函數函數說明說明ob_start()開啟輸出緩衝區ob_end_clean()清除輸出緩衝區的內容且關閉輸出緩衝區ob_end_flush()送出輸出緩衝區的內容且關閉輸出緩衝區ob_flush()送出輸出緩衝區的內容到瀏覽程式ob_clean()清除輸出緩衝區的內容,

14、表示不顯示其內容10-4 Cookies的處理10-4-1 Cookies的基礎10-4-2 新增Cookie10-4-3 获得Cookie的內容10-4-4 刪除Cookie10-4-5 陣列Cookie的使用10-4-1 Cookies的基礎-說明在Web網站通常都需要保存一些使用者的瀏覽記錄,例如:使用者是否曾經瀏覽過網站,或是一些個人輸入的資訊或選擇。Cookies就是儲存這些資料的主要解決方案之一。Cookies的英文是小餅乾的意義,源於這些儲存在客戶端電腦的檔案尺寸都很小,Cookies並不是儲存在伺服器,而是儲存在瀏覽程式所在電腦,所以並不會浪費伺服器資源。10-4-1 Cook

15、ies的基礎- 標頭的Cookie資料格式伺服器回應客戶端請求的 回應資料內就含有 標頭資訊, 標頭提供回應網頁檔案的重要資訊,內含多種欄位資料,每個欄位的格式: field-name:field_value當客戶端向伺服器提出請求時,在 回應資料的標頭就會將設定Cookie資料的欄位送到客戶端:Set-Cookie:name=value;expires=date;path=pname;domain=dname;secure10-4-1 Cookies的基礎- 標頭的Cookie資料屬性說明namename屬性屬性:Cookie的名稱,可以使用此名稱取出Cookie值和刪除Cookie。exp

16、iresexpires屬性屬性:一個選項,可有可無,指定Cookie存在的有效期限,使用GMT的時間,其格式如下所示: Weekday, DD-MM-YY HH:MM:SS GMTdomain屬性:伺服器的網域名稱,預設是建立Cookie的伺服器網域名稱。path屬性:在domain屬性下的路徑名稱,path屬性可以進一步在同一個網站分辨是哪一個網頁所建立的Cookies。secure屬性:假如指定此屬性,表示Cookie需要在保密情況下,才能在客戶端和伺服端傳送。10-4-1 Cookies的基礎- Cookie的根本應用個人資訊個人資訊:使用Cookies保存個人資訊,例如:姓名、地址、時

17、區、帳號和是否曾經進過此網站的記錄。個人化個人化的內容:的內容:Cookies可以儲存個人化網站外觀和個人偏好的網站內容,或是提供使用者有興趣的資訊。網站購物車網站購物車:線上購物車需要保存使用者選擇的商品,Cookies就可以用來記錄選購的商品清單。10-4-2 新增Cookie-語法PHP的Cookie是使用setcookie函數建立:setcookie string name , string value , int expire , string path , string domain , int secure10-4-2 新增Cookie-範例在PHP程式建立Cookie主要使用s

18、etcookie函數的前3個參數:setcookieUsername, $name, $date;$date是Cookie檔案儲存在客戶端電腦的有效期限,其日期計算的運算式:$date = strtotime+10 days, time;10-4-3 获得Cookie的內容客戶端電腦假如擁有Cookie,PHP程式可以使用$_COOKIE預定變數的結合陣列获得Cookie值:$user = $_COOKIEUsername;$pass = $_COOKIEPassword;10-4-4 刪除Cookie假如客戶端的Cookie不再需要,PHP程式可以使用setcookie函數刪除Cookie,

19、刪除Cookie是將expire參數設為過期:setcookieUsername, , time-3600;10-4-5 陣列Cookie的使用-建立Cookie儲存的資料也可以是結合陣列,在PHP程式获得Cookie後,同一個Cookie名稱下還可以使用鍵值儲存多個值:setcookieuserName, 陳會安, time+3600;setcookieuserUsername, Joe, time+3600;setcookieuserPassword, 1234, time+3600;10-4-5 陣列Cookie的使用-取出因為Cookie是一個陣列,在获得陣列Cookie的值時,可以使

20、用while迴圈配合list和each函數获得每一個鍵值的內容:if isset$cookie while list$name, $value = each$cookie echo $name = $value;10-5 PHP的交談期追蹤10-5-1 PHP的Session基礎10-5-2 交談期追蹤10-5-1 PHP的Session基礎-說明假设PHP程式啟動Session處理功能交談期處理功能。當使用者進入網站,PHP引擎就會自動指定Session ID編號建立一個新Session交談期,Session交談期是指使用者第一次進入網站,直到使用者離開網站為止的整個過程。Session類似

21、儲存在客戶端的Cookie,它可以在伺服端保存一些資源來儲存Session變數,PHP程式可以註冊不定數量的Session變數,PHP事實上是使用檔案來儲存這些Session變數。10-5-1 PHP的Session基礎-圖例當這些變數註冊成為Session變數後,所有啟動Session處理功能的PHP程式都可以存取這些變數。假如同時有多位使用者進入網站,因為每位使用者都會指定不同的Session ID編號,換句話說,每個人都可以擁有專屬的Session變數:10-5-2 交談期追蹤-說明交談期追蹤Session Tracking是一種機制,可以在一段時間內,讓網站維持一系列從同一位使用者提出

22、通常是指同一個瀏覽程式提出請求的狀態保存機制,以便追蹤使用者的狀態。交談期追蹤和第9章的狀態管理非常相似,不過第9章的狀態管理是指如何將一頁PHP程式的狀態傳遞到下一頁PHP程式的方法,交談期追蹤強調的是使用者在整個Session交談期和跨過多頁PHP程式 請求的狀態保存。10-5-2 交談期追蹤-圖例PHP引擎實作交談期追蹤的方式是使用Session變數,PHP引擎指定每一位瀏覽網站的使用者一個Session ID編號來作為識別,使用者每一次的 請求都需附上Session ID編號,以便判斷是否是同一位使用者提出的請求:10-6 Session的處理10-6-1 註冊與存取Session變數

23、10-6-2 取消註冊Session變數與關閉Session10-6-3 使用Session變數傳遞資料10-6-1 註冊與存取Session變數-函數在PHP程式使用Session處理功能需要呼叫session_start函數,以便讓PHP引擎將Session變數等相關資訊載入記憶體,其相關函數的說明如下表所示:函數函數說明說明session_start()啟動 Session,也就是將此 PHP 程式加入交談期session_id()傳回 Session ID 編號的字串session_register(string)將參數的變數名稱註冊成為 Session 變數session_is_registered(string) 檢查參數是否是已註冊的 Session 變數 , 如果是,傳回 true,否則為 false10-6-1 註冊與存取Session變數-使用在PHP程式使用Session變數需要先註冊:session_registerpage_counter;在註冊成為Session變數後,P

温馨提示

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

最新文档

评论

0/150

提交评论