版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六章Web程序設(shè)計(jì)Web互動(dòng)與會(huì)話控制技術(shù)新工科建設(shè)之路·計(jì)算機(jī)類專業(yè)系列教材01Web服務(wù)器交互原理01Web服務(wù)器交互原理Web服務(wù)器交互一般可分成4個(gè)步驟:連接過(guò)程、請(qǐng)求過(guò)程、應(yīng)答過(guò)程和關(guān)閉連接。連接過(guò)程就是在Web服務(wù)器和Web瀏覽器之間建立起來(lái)的一種連接。查看連接過(guò)程是否實(shí)現(xiàn),用戶可以找到并打開Socket虛擬文件,這個(gè)文件的建立意味著連接過(guò)程已經(jīng)成功建立。請(qǐng)求過(guò)程就是Web瀏覽器運(yùn)用Socket文件向服務(wù)器提出請(qǐng)求。應(yīng)答過(guò)程就是運(yùn)用HTTP把在請(qǐng)求過(guò)程中提出來(lái)的請(qǐng)求傳輸?shù)絎eb服務(wù)器,進(jìn)而實(shí)施任務(wù)處理,然后運(yùn)用HTTP把任務(wù)處理的結(jié)果傳輸?shù)絎eb瀏覽器,同時(shí)在Web瀏覽器上展示請(qǐng)求的界面。關(guān)閉連接就是當(dāng)應(yīng)答過(guò)程完成以后,Web服務(wù)器和Web瀏覽器之間斷開連接的過(guò)程。02頁(yè)面間的參數(shù)傳遞方式02頁(yè)面間的參數(shù)傳遞方式實(shí)現(xiàn)網(wǎng)頁(yè)間參數(shù)的傳遞有以下方法。①利用form表單的隱藏域hidden,在表單數(shù)據(jù)提交時(shí)傳遞參數(shù),需要與form表單一起使用。②利用超鏈接,通過(guò)URL查詢字符串傳遞參數(shù)。URL傳遞參數(shù)采用的是GET方法,其傳遞的參數(shù)值可以通過(guò)$_GET[]獲取。③用header()函數(shù)或JavaScript重定向功能,通過(guò)URL查詢字符串傳遞參數(shù)。④用Cookie將瀏覽器用戶的個(gè)人資料存儲(chǔ)在瀏覽器端的主機(jī)中,其他PHP程序通過(guò)讀取瀏覽器端主機(jī)中的Cookie信息實(shí)現(xiàn)頁(yè)面間的參數(shù)傳遞。⑤用Session將瀏覽器用戶的個(gè)人資料存儲(chǔ)在Web服務(wù)器中,其他PHP程序通過(guò)讀取服務(wù)器端主機(jī)中的Session信息實(shí)現(xiàn)頁(yè)面間的參數(shù)傳遞。03瀏覽器端數(shù)據(jù)提交方式03瀏覽器端數(shù)據(jù)提交方式01GET提交方式GET提交方式的本質(zhì)是將數(shù)據(jù)通過(guò)URL地址的形式傳遞到下一個(gè)頁(yè)面,提交的表單不會(huì)明顯地改變頁(yè)面狀態(tài)。GET提交方式是最簡(jiǎn)單的提交方法,主要用于靜態(tài)HTML文檔、圖像或數(shù)據(jù)庫(kù)查詢結(jié)果的簡(jiǎn)單檢索。GET提交方式是將“請(qǐng)求”數(shù)據(jù)以查詢字符串(QueryString)的格式附在URL后“提交”數(shù)據(jù)。03瀏覽器端數(shù)據(jù)提交方式02POST提交方式與GET提交方式相比,POST提交方式具有很多優(yōu)勢(shì)。由于POST提交方式通過(guò)頭信息傳遞數(shù)據(jù),所以它在長(zhǎng)度上是不受限制的,同時(shí)它不會(huì)把傳遞的數(shù)據(jù)暴露在瀏覽器的地址欄中。在通常情況下,POST提交方式被用來(lái)提交一些相對(duì)敏感或數(shù)據(jù)量較大的信息。POST提交方式一般通過(guò)form表單實(shí)現(xiàn),由于在默認(rèn)情況下form表單的數(shù)據(jù)提交方式為GET提交方式,必須在form表單的<form>標(biāo)簽中加入屬性method="post",將數(shù)據(jù)提交方式修改為POST提交方式。03瀏覽器端數(shù)據(jù)提交方式03兩種提交方式的比較POST提交方式比GET提交方式安全。這是由于使用GET提交方式提交的數(shù)據(jù)將出現(xiàn)在URL查詢字符串中,并且這些帶有查詢字符串的URL可以被瀏覽器緩存到歷史記錄中。因此,諸如用戶注冊(cè)、登錄等,不建議使用GET提交方式。使用POST提交方式可以提交更多的數(shù)據(jù)。理論上講,使用POST提交方式提交的數(shù)據(jù)沒(méi)有大小限制;使用GET提交方式提交的數(shù)據(jù)由于出現(xiàn)在URL查詢字符串中,而URL的長(zhǎng)度是受限制的(如IE瀏覽器對(duì)URL長(zhǎng)度的限制是2083字節(jié))。例如,新聞發(fā)布系統(tǒng)中提交篇幅較長(zhǎng)的新聞信息時(shí),不建議使用GET提交方式;帶有文件上傳功能的form表單則必須使用POST提交方式。不同的提交方式對(duì)應(yīng)的服務(wù)器端數(shù)據(jù)采集方式不同。03瀏覽器端數(shù)據(jù)提交方式04PHP獲取表單信息PHP腳本通常使用$_POST[]、$_GET[]獲取表單信息。在大多數(shù)情況下,表單以POST提交方式提交。1獲取文本框的值通過(guò)name屬性獲取相應(yīng)的value屬性值。獲取文件域的值文件域用于實(shí)現(xiàn)文件或圖片的上傳。文件域有一個(gè)特有的屬性:accept,用于指定上傳的文件類型,如果需要限制上傳文件的類型,就可以通過(guò)設(shè)置該屬性完成。203瀏覽器端數(shù)據(jù)提交方式04PHP獲取表單信息3獲取復(fù)選框的值復(fù)選框一般有多個(gè)選項(xiàng)同時(shí)存在,為了傳遞值,name可以是一個(gè)數(shù)組形式。獲取下拉列表的值首先需要定義下拉列表的name屬性值,然后應(yīng)用$__POST[]全局變量獲取該屬性值。45獲取單選按鈕(radio)的值單選按鈕一般是成組出現(xiàn)的,具有相同的name值和不同的value值,在一組單選按鈕中同一時(shí)間只能選中一個(gè)。03瀏覽器端數(shù)據(jù)提交方式05URL操作URL傳遞參數(shù)采用的是GET提交方式,其傳遞的參數(shù)值可以通過(guò)$_GET[]獲取。PHP處理用戶提交信息的過(guò)程與函數(shù)的使用類似,若將腳本login.php看作一個(gè)函數(shù),則URL參數(shù)相當(dāng)于傳遞給函數(shù)的參數(shù),腳本執(zhí)行后返回給瀏覽器的結(jié)果相當(dāng)于函數(shù)的返回值。用戶可通過(guò)傳遞不同的URL參數(shù)獲得不同的訪問(wèn)結(jié)果,這就是URL參數(shù)的交互。1.獲取URL傳遞的參數(shù)使用urlencode()函數(shù)可以把字符串中除“-”“_”符號(hào)與字母以外的字符轉(zhuǎn)換為十六進(jìn)制數(shù)的形式,空格轉(zhuǎn)換為“+”符號(hào)。2.URL的編碼與解碼04在PHP腳本中使用JavaScript編程04在PHP腳本中使用JavaScript編程01JavaScript腳本的使用在PHP腳本中使用JavaScript腳本時(shí),JavaScript代碼需要在<scriptLanguage="JavaScript">和</script>中使用。
document是JavaScript的文檔對(duì)象,document.write()函數(shù)用于在文檔中輸出字符串,document.close()函數(shù)用于關(guān)閉輸出操作。在JavaScript中,使用//表示程序中的注釋,服務(wù)器在解釋程序時(shí),將不考慮一行程序中字符“//”后的代碼。注意04在PHP腳本中使用JavaScript編程02數(shù)據(jù)類型和變量JavaScript包含4種基本的數(shù)據(jù)類型,如表6-1所示。05
Cookie技術(shù)05Cookie技術(shù)01了解Cookie1.什么是CookieCookie是一種在遠(yuǎn)程瀏覽器端存儲(chǔ)數(shù)據(jù)并以此來(lái)跟蹤和識(shí)別用戶的機(jī)制。簡(jiǎn)單地說(shuō),Cookie是Web服務(wù)器暫時(shí)存儲(chǔ)在用戶硬盤上的一個(gè)文本文件,隨后會(huì)被Web瀏覽器讀取。當(dāng)用戶再次訪問(wèn)Web網(wǎng)站時(shí),網(wǎng)站通過(guò)讀取Cookie文件記錄這位訪客的特定信息(如上次訪問(wèn)的位置、花費(fèi)的時(shí)間、用戶名和密碼等),從而迅速做出響應(yīng),如在頁(yè)面中不需要輸入用戶的ID和密碼即可直接登錄網(wǎng)站等。05Cookie技術(shù)01了解Cookie2.Cookie的功能Cookie常用于以下3方面。①記錄訪客的某些信息,如可以利用Cookie記錄用戶訪問(wèn)網(wǎng)頁(yè)的次數(shù),或者記錄訪客曾經(jīng)輸入過(guò)的信息。另外,某些網(wǎng)站可以使用Cookie自動(dòng)記錄訪客上次登錄的用戶名。②在頁(yè)面之間傳遞變量。瀏覽器并不會(huì)存儲(chǔ)當(dāng)前頁(yè)面上的任何變量信息,當(dāng)頁(yè)面被關(guān)閉時(shí),頁(yè)面上的任何變量信息將隨之消失。如果用戶聲明一個(gè)變量id=8,并把這個(gè)變量傳遞到另一個(gè)頁(yè)面,可以把變量id以Cookie形式存儲(chǔ),然后在下一頁(yè)通過(guò)讀取該Cookie來(lái)獲取變量的值。③將查看的Internet頁(yè)面存儲(chǔ)在Cookies臨時(shí)文件夾中,以提高以后瀏覽的速度。05Cookie技術(shù)02創(chuàng)建Cookie在PHP中,通過(guò)setcookie()函數(shù)創(chuàng)建Cookie。在創(chuàng)建Cookie前必須了解的是,Cookie是HTTP頭標(biāo)的組成部分,頭標(biāo)必須在頁(yè)面其他內(nèi)容前發(fā)送,必須先輸出,即使在setcookie()函數(shù)前輸出HTML標(biāo)記或echo語(yǔ)句甚至一個(gè)空行都會(huì)導(dǎo)致程序出錯(cuò),其語(yǔ)法格式如下:05Cookie技術(shù)03讀取Cookie與表單數(shù)據(jù)存儲(chǔ)在數(shù)組$_POST[]或s_GET[]中類似,setcookie()函數(shù)生成的Cookie數(shù)據(jù)存儲(chǔ)在超級(jí)全局?jǐn)?shù)組$_COOKIE[]中,PHP腳本可以通過(guò)$_COOKIBE[]來(lái)獲取Cookie數(shù)據(jù),具體語(yǔ)法格式如下:其中,$value表示一個(gè)變量,存儲(chǔ)從Cookie中獲取的數(shù)據(jù);name是一個(gè)字符串,表示Cookie信息的name值。下面演示$_COOKIE[]的用法。05Cookie技術(shù)04刪除Cookie1使用setcookie()函數(shù)刪除Cookie刪除Cookie和創(chuàng)建Cookie的方式基本類似,刪除Cookie也使用setcookie()函數(shù)。刪除Cookie只需要將setcookie()函數(shù)中的第二個(gè)參數(shù)設(shè)置為空值,將第三個(gè)參數(shù)即Cookie的過(guò)期時(shí)間設(shè)置為小于系統(tǒng)的當(dāng)前時(shí)間即可。使用瀏覽器手動(dòng)刪除Cookie;在使用Cookie時(shí),Cookie自動(dòng)生成一個(gè)文本文件存儲(chǔ)在瀏覽器的Cookies臨時(shí)文件夾中。使用瀏覽器刪除Cookie文件是非常便捷的方法:選擇瀏覽器的“工具”/“Internet選項(xiàng)”命令,打開“Internet選項(xiàng)”對(duì)話框,在“常規(guī)”選項(xiàng)卡中單擊“刪除Cookies”按鈕,彈出“刪除Cookies”對(duì)話框,單擊“確定”按鈕,即可成功刪除全部Cookie文件。206
Session技術(shù)06Session技術(shù)01了解Session1.什么是SessionSession被譯為中文為“會(huì)話”,本義是指有始有終的一系列動(dòng)作/消息,如打電話時(shí)從拿起電話撥號(hào)到掛斷電話這中間的一系列過(guò)程可以稱為一個(gè)Session。在計(jì)算機(jī)專業(yè)術(shù)語(yǔ)中,Session是指一個(gè)終端用戶與交互系統(tǒng)進(jìn)行通信的時(shí)間間隔,通常是指從注冊(cè)進(jìn)入系統(tǒng)到注銷退出系統(tǒng)所經(jīng)過(guò)的時(shí)間。因此,Session實(shí)際上是一個(gè)特定的時(shí)間概念。06Session技術(shù)01了解Session2.Session工作原理當(dāng)啟動(dòng)一個(gè)Session會(huì)話時(shí),會(huì)有一個(gè)隨機(jī)且唯一的Session_id,也就是由Session的文件名生成的,這時(shí)Session_id存儲(chǔ)在服務(wù)器的內(nèi)存中。當(dāng)我們關(guān)閉頁(yè)面時(shí),此id會(huì)自動(dòng)注銷,重新登錄此頁(yè)面,會(huì)再次生成一個(gè)隨機(jī)且唯一的id。06Session技術(shù)01了解Session3.Session的功能Session在Web技術(shù)中占有非常重要的分量。由于網(wǎng)頁(yè)是一種無(wú)狀態(tài)的連接程序,因此無(wú)法得知用戶的瀏覽狀態(tài),必須通過(guò)Session記錄用戶的有關(guān)信息,以供用戶再次以此身份對(duì)Web服務(wù)器提出要求時(shí)進(jìn)行確認(rèn)。另外,Session會(huì)話適合存儲(chǔ)用戶信息量比較少的情況。如果用戶需要存儲(chǔ)的信息量相對(duì)較少,并且內(nèi)容不需要長(zhǎng)期存儲(chǔ),就使用Session把信息存儲(chǔ)到服務(wù)器端比較適合。06Session技術(shù)02創(chuàng)建Session1啟動(dòng)Session啟動(dòng)PHPSession的方式有兩種:一種是使用session_start()函數(shù),另一種是使用session_register()函數(shù)為Session登錄一個(gè)變量來(lái)隱含地啟動(dòng)Session。注冊(cè)SessionSession變量被啟動(dòng)后,全部存儲(chǔ)在數(shù)組$_SESSION中。通過(guò)數(shù)組$_SESSION創(chuàng)建一個(gè)Session變量很容易,直接給該數(shù)組添加一個(gè)元素即可。由于Session中的數(shù)據(jù)都存儲(chǔ)在超全局?jǐn)?shù)組$_SESSION[]中,因此從Session中讀取數(shù)據(jù)就要操作超全局?jǐn)?shù)組$_SESSION[]。.206Session技術(shù)02創(chuàng)建Session3使用Session首先判斷Session變量是否存在Session_id,
如果不存在,就創(chuàng)建一個(gè),并且使其能夠通過(guò)全局?jǐn)?shù)組$_SESSION進(jìn)行訪問(wèn);如果已經(jīng)存在,將這個(gè)已注冊(cè)的Session變量載入,以供用戶使用。刪除Session刪除Session的方法主要有3種:刪除單個(gè)Session,刪除多個(gè)Session,結(jié)束當(dāng)前的Session。406Session技術(shù)03使用Session設(shè)置時(shí)間1.客戶端沒(méi)有禁止Cookie2.客戶端禁用Cookie解決客戶端禁用Cookie的問(wèn)題有以下幾種方法。①在登錄前告知用戶必須打開Cookie。②設(shè)置php.ini文件中的session.use_trans_sid=1,或者在編譯時(shí)打開了enable-trans-sid選項(xiàng),讓PHP自動(dòng)跨頁(yè)面?zhèn)鬟fsession_id.③通過(guò)使用GET方式隱藏表單傳遞session_id.④使用文件或數(shù)據(jù)庫(kù)存儲(chǔ)session_id,
在頁(yè)面間傳遞時(shí)手動(dòng)調(diào)用。07
Session高級(jí)應(yīng)用07Session高級(jí)應(yīng)用01Session臨時(shí)文件在服務(wù)器中,如果將所有用戶的Session都存儲(chǔ)到臨時(shí)目錄中,會(huì)降低服務(wù)器的安全性和效率,導(dǎo)致打開服務(wù)器所在的站點(diǎn)非常慢。[例6-25]用PHP函數(shù)session_save_path()存儲(chǔ)session臨時(shí)文件,緩解因臨時(shí)文件的存儲(chǔ)導(dǎo)致服務(wù)器效率降低和站點(diǎn)打開緩慢的問(wèn)題,實(shí)例如下。07Session高級(jí)應(yīng)用02Session緩存Session緩存完成使用的是session_cache_limiter()函數(shù),其語(yǔ)法格式如下:其中,參數(shù)cache_limiter為public或private。同時(shí),Session緩存并不是指在服務(wù)器端緩存而是在客戶端緩存,在服務(wù)器中沒(méi)有顯示。設(shè)置緩存時(shí)間使用的是session_cache_expiry()函數(shù),其語(yǔ)法格式如下;其中,參數(shù)cache_expire是Session緩存的時(shí)間,單位是分鐘。07Session高級(jí)應(yīng)用03Session綜合應(yīng)用案例用戶登錄是大部分Web應(yīng)用必備的功能,一般由以下步驟組成:當(dāng)用戶進(jìn)入站點(diǎn)首頁(yè)時(shí),若未登錄,則頁(yè)面會(huì)提示用戶完成登錄并提供跳轉(zhuǎn)到登錄頁(yè)面的超鏈接;當(dāng)用戶登錄時(shí),若用戶名和密碼都正確,則登錄成功,否則登錄失敗并自動(dòng)跳轉(zhuǎn)到登錄頁(yè)面。登錄成功后,還可以單擊“退出”超鏈接退出登錄。在通常情況下,用
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 架子工變更管理知識(shí)考核試卷含答案
- 貴金屬首飾機(jī)制工安全綜合評(píng)優(yōu)考核試卷含答案
- 印前處理和制作員安全生產(chǎn)規(guī)范測(cè)試考核試卷含答案
- 光學(xué)計(jì)量員崗前安全知識(shí)考核試卷含答案
- 2024年湖南農(nóng)業(yè)大學(xué)馬克思主義基本原理概論期末考試題附答案
- 2024年鄭州美術(shù)學(xué)院輔導(dǎo)員考試筆試真題匯編附答案
- 2024年邯鄲職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試題附答案
- 2025年九江市特崗教師招聘真題題庫(kù)附答案
- 2025北京市公務(wù)員考試公共基礎(chǔ)知識(shí)題庫(kù)及答案1套
- 2025年云南特殊教育職業(yè)學(xué)院輔導(dǎo)員招聘考試真題匯編附答案
- 食品安全管理制度打印版
- 多聯(lián)機(jī)安裝施工方案
- 煤礦副斜井維修安全技術(shù)措施
- 公共視頻監(jiān)控系統(tǒng)運(yùn)營(yíng)維護(hù)要求
- 河南省職工養(yǎng)老保險(xiǎn)參保人員關(guān)鍵信息變更核準(zhǔn)表
- 四川大學(xué)宣傳介紹PPT
- 小學(xué)數(shù)學(xué)人教版六年級(jí)上冊(cè)全冊(cè)電子教案
- 液氨儲(chǔ)罐區(qū)風(fēng)險(xiǎn)評(píng)估與安全設(shè)計(jì)
- 阿司匹林在一級(jí)預(yù)防中應(yīng)用回顧
- 2023年福??h政務(wù)中心綜合窗口人員招聘筆試模擬試題及答案解析
- GB/T 4103.10-2000鉛及鉛合金化學(xué)分析方法銀量的測(cè)定
評(píng)論
0/150
提交評(píng)論