交谈期追踪的Session与Cookies处理.ppt

上传人:za****8 文档编号:15449003 上传时间:2020-08-10 格式:PPT 页数:45 大小:609KB
返回 下载 相关 举报
交谈期追踪的Session与Cookies处理.ppt_第1页
第1页 / 共45页
交谈期追踪的Session与Cookies处理.ppt_第2页
第2页 / 共45页
交谈期追踪的Session与Cookies处理.ppt_第3页
第3页 / 共45页
点击查看更多>>
资源描述
第10章 交談期追蹤的Session與Cookies處理,10-1 PHP的預定變數 10-2 HTTP標頭處理 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引擎建立的變數,HTTP通訊協定傳送的不只URL網址,在HTTP標頭資訊擁有瀏覽程式版本、伺服器、Cookie、表單欄位資料等相關資訊。 在PHP 4.10之後版本提供一組結合陣列的預定變數,可以取得PHP程式和HTTP標頭的相關資訊,預設擁有全域的變數範圍,稱為自動全域(Autoglobals)或超全域(Superglobals)變數。,10-1-1 PHP的預定變數-超全域變數,10-1-2 伺服器系統資訊的內容-變數名稱,10-1-2 伺服器系統資訊的內容-使用,在PHP程式可以指定變數名稱的鍵值來取得指定的系統資訊: $ip = $_SERVERREMOTE_ADDR; $path = $_SERVERSCRIPT_NAME; PHP程式可以使用foreach迴圈顯示伺服器的所有變數值: foreach ($_SERVER as $key=$value) echo . $key . ; echo . $value . ; ,鍵值,10-2 HTTP標頭處理,10-2-1 轉址到其他網頁或PHP程式 10-2-2 定時更新網頁 10-2-3 設定輸出文件內容的資料類型 10-2-4 設定在快取保留的期限,10-2 HTTP標頭處理,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, d M Y H:i:s, mktime(0,0,0,12,31,2006). GMT ); 程式碼使用gmdate()函數取得GMT時間,mktime()函數指定日期/時間,以此例是:Sat, 30 Dec 2006 16:00:00 GMT。 如果不想將PHP程式保留在快取,只需將Expires設為過去時間即可: header(Expires: Mon, 26 Jul 2004 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()函數會更改HTTP標頭的情況,避免產生重複寫入標頭資料的錯誤。,10-3-1 為什麼使用輸出緩衝區-圖例,例如:更改程式範例Ch10-2-1.php,刪除第1列的設定不使用輸出緩衝區輸出網頁內容,就可以測試轉址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-4 Cookies的處理,10-4-1 Cookies的基礎 10-4-2 新增Cookie 10-4-3 取得Cookie的內容 10-4-4 刪除Cookie 10-4-5 陣列Cookie的使用,10-4-1 Cookies的基礎-說明,在Web網站通常都需要保留一些使用者的瀏覽記錄,例如:使用者是否曾經瀏覽過網站,或是一些個人輸入的資訊或選擇。Cookies就是儲存這些資料的主要解決方案之一。 Cookies的英文是小餅乾的意義,源於這些儲存在客戶端電腦的檔案尺寸都很小,Cookies並不是儲存在伺服器,而是儲存在瀏覽程式所在電腦,所以並不會浪費伺服器資源。,10-4-1 Cookies的基礎-HTTP標頭的Cookie資料(格式),伺服器回應客戶端請求的HTTP回應資料內就含有HTTP標頭資訊,HTTP標頭提供回應網頁檔案的重要資訊,內含多種欄位資料,每個欄位的格式: field-name:field_value 當客戶端向伺服器提出請求時,在HTTP回應資料的標頭就會將設定Cookie資料的欄位送到客戶端: Set-Cookie:name=value;expires=date;path=pname;domain=dname;secure,欄位名稱,欄位值,10-4-1 Cookies的基礎-HTTP標頭的Cookie資料(屬性說明),name屬性:Cookie的名稱,可以使用此名稱取出Cookie值和刪除Cookie。 expires屬性:一個選項,可有可無,指定Cookie存在的有效期限,使用GMT的時間,其格式如下所示: Weekday, DD-MM-YY HH:MM:SS GMT domain屬性:伺服器的網域名稱,預設是建立Cookie的伺服器網域名稱。 path屬性:在domain屬性下的路徑名稱,path屬性可以進一步在同一個網站分辨是哪一個網頁所建立的Cookies。 secure屬性:如果指定此屬性,表示Cookie需要在保密情況下,才能在客戶端和伺服端傳送。,10-4-1 Cookies的基礎- Cookie的基本應用,個人資訊:使用Cookies保留個人資訊,例如:姓名、地址、時區、帳號和是否曾經進過此網站的記錄。 個人化的內容:Cookies可以儲存個人化網站外觀和個人偏好的網站內容,或是提供使用者有興趣的資訊。 網站購物車:線上購物車需要保留使用者選擇的商品,Cookies就可以用來記錄選購的商品清單。,10-4-2 新增Cookie-語法,PHP的Cookie是使用setcookie()函數建立: setcookie ( string name , string value , int expire , string path , string domain , int secure),Cookie值,保留的客戶端的期限,其值是整數的UNIX時間刻記,10-4-2 新增Cookie-範例,在PHP程式建立Cookie主要使用setcookie()函數的前3個參數: setcookie(Username, $name, $date); $date是Cookie檔案儲存在客戶端電腦的有效期限,其日期計算的運算式: $date = strtotime(+10 days, time();,Cookie名稱,Cookie值,時間刻記的整數值,10-4-3 取得Cookie的內容,客戶端電腦如果擁有Cookie,PHP程式可以使用$_COOKIE預定變數的結合陣列取得Cookie值: $user = $_COOKIEUsername; $pass = $_COOKIEPassword;,10-4-4 刪除Cookie,如果客戶端的Cookie不再需要,PHP程式可以使用setcookie()函數刪除Cookie,刪除Cookie是將expire參數設為過期: setcookie(Username, , time()-3600);,設定為1個小時前,10-4-5 陣列Cookie的使用-建立,Cookie儲存的資料也可以是結合陣列,在PHP程式取得Cookie後,同一個Cookie名稱下還可以使用鍵值儲存多個值: setcookie(userName, 陳會安, time()+3600); setcookie(userUsername, Joe, time()+3600); setcookie(userPassword, 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; ,10-5 PHP的交談期追蹤,10-5-1 PHP的Session基礎 10-5-2 交談期追蹤,10-5-1 PHP的Session基礎-說明,若PHP程式啟動Session處理功能(交談期處理功能)。當使用者進入網站,PHP引擎就會自動指定Session ID編號建立一個新Session(交談期),Session(交談期)是指使用者第一次進入網站,直到使用者離開網站為止的整個過程。 Session類似儲存在客戶端的Cookie,它可以在伺服端保留一些資源來儲存Session變數,PHP程式可以註冊不定數量的Session變數,PHP事實上是使用檔案來儲存這些Session變數。,10-5-1 PHP的Session基礎-圖例,當這些變數註冊成為Session變數後,所有啟動Session處理功能的PHP程式都可以存取這些變數。如果同時有多位使用者進入網站,因為每位使用者都會指定不同的Session ID編號,換句話說,每個人都可以擁有專屬的Session變數:,10-5-2 交談期追蹤-說明,交談期追蹤(Session Tracking)是一種機制,可以在一段時間內,讓網站維持一系列從同一位使用者提出(通常是指同一個瀏覽程式提出)請求的狀態保留機制,以便追蹤使用者的狀態。 交談期追蹤和第9章的狀態管理十分相似,不過第9章的狀態管理是指如何將一頁PHP程式的狀態傳遞到下一頁PHP程式的方法,交談期追蹤強調的是使用者在整個Session交談期和跨過多頁PHP程式HTTP請求的狀態保留。,10-5-2 交談期追蹤-圖例,PHP引擎實作交談期追蹤的方式是使用Session變數,PHP引擎指定每一位瀏覽網站的使用者一個Session ID編號來作為識別,使用者每一次的HTTP請求都需附上Session ID編號,以便判斷是否是同一位使用者提出的請求:,10-6 Session的處理,10-6-1 註冊與存取Session變數 10-6-2 取消註冊Session變數與關閉Session 10-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變數: $_SESSIONpage_counter+; 可以使用session_id()函數取得使用者的Session ID: 使用者的Session ID : ,Session變數page_counter加一,10-6-2 取消註冊Session變數與關閉Session,PHP提供Session相關處理函數可以取消註冊Session變數與關閉Session,其相關函數的說明,10-6-3 使用Session變數傳遞資料-建立Session變數1,PHP的Session變數可以在網頁之間傳遞資料,換句話說,我們可以使用Session變數取代表單欄位或URL參數來傳遞資料。例如:使用Session變數儲存使用者資訊,使用者hueyan的Session變數: $_SESSIONuserName = hueyan; $_SESSIONuserPassword = 1234;,10-6-3 使用Session變數傳遞資料-建立Session變數2,如果另一位使用者jane也執行此PHP程式,伺服器也會替它建立一組Session變數: $_SESSIONuserName = jane; $_SESSIONuserPassword = 5678;,10-6-3 使用Session變數傳遞資料-取得Session變數值,只要PHP程式啟動Session交談期,都可以取得上述Session變數值: $name = $_SESSIONuserName; $pass = $_SESSIONuserPassword;,
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!