您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 第10章 交谈期追踪的Session与Cookies处理
第10章交談期追蹤的Session與Cookies處理10-1PHP的預定變數10-2HTTP標頭處理10-3輸出緩衝區處理10-4Cookies的處理10-5PHP的交談期追蹤10-6Session的處理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的預定變數-超全域變數超全域變數說明$GLOBALS在PHP3就已經存在,包含目前PHP程式所有全域變數,鍵值是全域變數的名稱$_SERVERWeb伺服器指定的變數,屬於目前PHP程式執行環境的相關變數,詳見第10-1-2節的說明$_GET結合陣列儲存透過HTTPGET方法傳入PHP程式檔案的表單欄位資料,鍵值是欄位名稱,例如:程式範例Ch9-2-4.php$_POST結合陣列儲存透過HTTPPOST方法傳入PHP程式檔案的表單欄位資料,鍵值是欄位名稱,詳見第9章$_COOKIE結合陣列儲存透過HTTP傳遞的Cookie資料,詳見第10-4節$_FILES結合陣列儲存使用HTTPPOST方法上傳檔案的相關資訊,詳見第11章的說明$_ENV結合陣列儲存PHP執行時或CGI的環境變數$_REQUEST結合陣列儲存$_GET、$_POST、$_COOKIE和$_FILES變數的內容。請注意!從PHP4.3.0版開始,$_FILES變數已經不存在$_REQUEST變數$_SESSION結合陣列儲存目前PHP程式擁有的Session變數,詳見第10-6節的說明10-1-2伺服器系統資訊的內容-變數名稱變數名稱說明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_PORTHTTP通訊協定的埠號SERVER_PROTOCOLHTTP通訊協定的版本SERVER_SOFTWARE使用的伺服器軟體和版本10-1-2伺服器系統資訊的內容-使用在PHP程式可以指定變數名稱的鍵值來取得指定的系統資訊:$ip=$_SERVER[REMOTE_ADDR];$path=$_SERVER[SCRIPT_NAME];PHP程式可以使用foreach迴圈顯示伺服器的所有變數值:foreach($_SERVERas$key=$value){echotrtd.$key./td;echotd.$value./td/tr;}鍵值10-2HTTP標頭處理10-2-1轉址到其他網頁或PHP程式10-2-2定時更新網頁10-2-3設定輸出文件內容的資料類型10-2-4設定在快取保留的期限10-2HTTP標頭處理PHP的header()函數可以送出HTML文件的標頭資訊,透過送出的標頭資訊來轉址或定時更新網頁、指定文件內容和保留期限。header()函數的說明:函數說明header(string[,bool])傳回第1個參數的HTTP標頭資料,預設取代前一個標頭中相同型態的資料,如果第2個參數為false,表示允許多個同型態的資料10-2-1轉址到其他網頁或PHP程式轉址功能是指在執行PHP程式時,可以轉址到其他網址或網站的其他網頁或PHP程式,header()函數是使用Location型態來指定轉址的URL網址:header(Location:Ch10-1-2.php);header(Location:“);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資料類型,常用類型:MIME資料類型說明text/htmlHTML文件檔案text/xmlXML文件的檔案text/plain一般文字檔image/jpegJPEG格式的圖片檔image/gifGIF格式的圖片檔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提供輸出緩衝區控制函數可以開啟、使用和關閉使用輸出緩衝區,其相關函數的說明:函數說明ob_start()開啟輸出緩衝區ob_end_clean()清除輸出緩衝區的內容且關閉輸出緩衝區ob_end_flush()送出輸出緩衝區的內容且關閉輸出緩衝區ob_flush()送出輸出緩衝區的內容到瀏覽程式ob_clean()清除輸出緩衝區的內容,表示不顯示其內容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是使用setco
本文标题:第10章 交谈期追踪的Session与Cookies处理
链接地址:https://www.777doc.com/doc-4798393 .html