版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 PHP第7章PHP與Web頁面交互Web表單交互URL參數(shù)交互數(shù)據與特殊字符的處理HTTP協(xié)議 目錄HTTP協(xié)議7.1Web交互 7.1 Web交互1.Web表單交互l 當表單的method屬性提交方式為POST時,瀏覽器發(fā)送POST請求l 當表單的method屬性提交方式為GET時,瀏覽器發(fā)送GET請求填寫表單服務器處理并保存用戶用戶瀏覽器發(fā)送請求 7.1 Web交互1.Web表單交互當PHP收到來自瀏覽器提交的數(shù)據后,會自動保存到超全局變量中。超全局變量是PHP預定義好的變量,可以在PHP腳本的任何位置使用。l 常見的超全局數(shù)組變量有$_POST、$_GET等l 通過P
2、OST方式提交的數(shù)據會保存到$_POST中l(wèi) 通過GET方式提交的數(shù)據會保存到$_GET中具體案例請參考教材 7.1 Web交互2.URL參數(shù)交互當表單以GET方式提交時,會將用戶填寫的內容放在URL參數(shù)中進行提交。表單的method屬性刪除(或將其值改為get),然后提交表單,會得到如下URL。 7.1 Web交互2.URL參數(shù)交互http:/localhost/login.php?username=test&password=123456 “?”后面的內容為參數(shù)信息 參數(shù)是由參數(shù)名和參數(shù)值組成的,中間使用等號“=”進行連接 多個參數(shù)之間使用“&”分隔 username和pa
3、ssword是參數(shù)名,對應表單中的name屬性 test和123456是參數(shù)值,對應用戶填寫的內容 7.1 Web交互2.URL參數(shù)交互接下來在PHP中使用$_GET數(shù)組接收URL參數(shù),并進行輸出。if (isset($_GETusername) & isset($_GETpassword) echo $_GETusername;/ 輸出結果:test echo $_GETpassword;/ 輸出結果:123456具體案例請參考教材 7.1 Web交互3.數(shù)組方式提交數(shù)據l 復選框是一種支持提交多個值的表單控件l 在編寫表單時應將其name屬性設置為數(shù)組 7.1 Web交互3.數(shù)組方
4、式提交數(shù)據 游泳 讀書 跑步Array ( 0 = swimming 1 = running )print_r($_POSThobby);以POST方式提交表單 7.1 Web交互3.數(shù)組方式提交數(shù)據l $_POST中的hobby元素是一個索引數(shù)組,數(shù)組中的元素是用戶所選復選框對應的value屬性值。l 當用戶未選中任何復選框時,$_POST數(shù)組中將不存在hobby元素。 7.1 Web交互3.數(shù)組方式提交數(shù)據表單控件的name屬性值還可以指定為鍵名是字符串的數(shù)組,支持多維數(shù)組/ 接收代碼$_POSTusername;$_POSTusera1;$_POSTuser1b;$_POSTuserc0
5、;$_POSTuser2d;$_POSTuser30;$_POSTuser310;$_POSTuser320;$_POSTuser402;$_POSTuser403; 7.1 Web交互3.數(shù)組方式提交數(shù)據l 當需要處理的表單內容非常多的情況下,表單中name屬性的命名可以采用多維數(shù)組的形式,便于開發(fā),其使用方式與PHP中的數(shù)組非常相似。l 例如,開發(fā)在線考試系統(tǒng)時,表單中有填空題、單選題、多選題、判斷題等多種題型,這時可以將每種題型放到一個數(shù)組里面進行提交,PHP收到后分別遍歷每種題型的數(shù)組即可。具體案例請參考教材 7.1 Web交互4.HTML特殊字符處理在將用戶輸入的內容輸出到HTML中
6、顯示時,會遇到特殊字符問題。例如,用戶提交一段HTML代碼時,為了將代碼原樣顯示,需要將里面的特殊字符串轉換為實體字符,防止被瀏覽器解析。若沒有對這些特殊字符進行處理,會給網站的安全帶來風險,下面通過例7-4來演示這種情況。具體案例請參考教材 7.1 Web交互4.HTML特殊字符處理為了解決這類問題,PHP提供了許多專門用于處理HTML特殊字符的函數(shù)。硬件硬件說明說明nl2br()將字符串中的換行符前插入HTML換行標記strip_tags()從字符串中去除HTML和PHP標記htmlspecialchars()將字符串中的特殊字符轉換為HTML實體字符htmlspecialchars_de
7、code()將字符串中的HTML實體字符轉換回原來的字符urlencode()編碼URL字符串urldecode()解碼已編碼的URL字符串http_build_query()生成URL編碼后的字符串 7.1 Web交互4.HTML特殊字符處理nl2br()舉例舉例: textarea中的換行符是“rn”,而不是HTML中的換行標記“”。因此,若在表單的textarea標記中輸入多行文本,然后將文本顯示在div標記中時,會遇到換行顯示成空格的問題。 7.1 Web交互4.HTML特殊字符處理nl2br()當需要正確顯示換行時,需要通過nl2br()函數(shù)進行轉換,示例代碼如下。echo nl2b
8、r(123n456, false);123456 7.1 Web交互4.HTML特殊字符處理strip_tags()strip_tags()可以去除字符串中的標記部分,通常用于讀取一段HTML代碼后,去除其中的HTML標記,只保留文本。$html = EOD蘋果香蕉123456789EOD;echo strip_tags($html);蘋果香蕉123456789 7.1 Web交互4.HTML特殊字符處理轉換和還原字符串中的HTML特殊字符htmlspecialchars()和htmlspecialchars_decode()函數(shù)分別用于轉換和還原字符串中的HTML特殊字符,具體包括“&
9、;”、單引號、雙引號、“”,其中單引號需要將函數(shù)的第2個參數(shù)設置為ENT_QUOTES常量才會進行轉換。 7.1 Web交互4.HTML特殊字符處理轉換和還原字符串中的HTML特殊字符$html = 123456;$html = htmlspecialchars($html, ENT_QUOTES | ENT_HTML5);echo $html, n;$str = htmlspecialchars_decode($html, ENT_QUOTES | ENT_HTML5);echo $html;123<br>4'56123456 7.1 Web交互
10、4.HTML特殊字符處理urlencode()和urldecode()函數(shù)urlencode()和urldecode()函數(shù)主要用于在HTML中輸出URL參數(shù)時進行編碼轉換,前者用于編碼,后者用于解碼。注意,當使用$_GET接收參數(shù)時,獲得的數(shù)據已經是URL解碼后的結果,無需手動進行處理。 7.1 Web交互4.HTML特殊字符處理urlencode()和urldecode()函數(shù)$name = A&B C;$name = urlencode($name);/ URL 編碼echo http:/localhost/test.php?name=$name, n;echo urldecod
11、e($name);/ URL解碼http:/localhost/test.php?name=A%26B+CA&B C 7.1 Web交互4.HTML特殊字符處理http_build_query()利用http_build_query()函數(shù)可以將PHP關聯(lián)數(shù)組轉換為URL參數(shù)字符串。$params = name = test,hobby = reading, running;$query = http_build_query($params);echo http:/localhost/test.php?$query;http:/localhost/test.php?name=test&
12、amp;hobby%5B0%5D=reading&hobby%5B1%5D=running 7.2 HTTP協(xié)議1.什么是HTTPHTTP:HyperText Transfer Protocol的簡稱,超文本傳輸協(xié)議是什么是什么:W3C組織推出的瀏覽器與Web服務器之間數(shù)據交互需遵循的一種規(guī)范怎么用怎么用:專門用于定義瀏覽器與Web服務器之間數(shù)據交換的格式 7.2 HTTP協(xié)議1.什么是HTTP HTTP是一種基于“請求”和“響應”的協(xié)議當 客戶端與服務器建立連接后,由客戶端(瀏覽器)向服務器端發(fā)送一個請求,被稱作HTTP請求 客戶端與服務器建立連接后,服務器接收到請求后會做出響應,稱
13、為HTTP響應 7.2 HTTP協(xié)議1.什么是HTTPHTTP之所以在Web開發(fā)中占據重要的位置l 支持主流軟件架構:支持B/S、C/S軟件架構。l 簡單快速:客戶端向服務器請求服務時,只需傳送請求方式和路徑即可。常用的請求方式有GET、POST等,每種方式規(guī)定了客戶端與服務器聯(lián)系的類型不同。由于HTTP協(xié)議簡單,使得HTTP服務器的程序規(guī)模小,通信速度快。l 靈活:HTTP允許傳輸任意類型的數(shù)據,傳輸?shù)臄?shù)據類型由Content-Type標記。 7.2 HTTP協(xié)議2.查看HTTP消息HTTP請求消息的概念請求消息的概念:當用戶在瀏覽器中訪問某個URL地址、單擊某個超鏈接或者提交表單時,瀏覽器
14、都會向服務器發(fā)送請求數(shù)據,即HTTP請求消息。HTTP響應消息的概念響應消息的概念:服務器接收到請求數(shù)據后,將處理后的數(shù)據回送給客戶端,這就是HTTP響應消息。HTTP消息的概念消息的概念:HTTP請求消息和HTTP響應消息統(tǒng)稱為HTTP消息。 7.2 HTTP協(xié)議2.查看HTTP消息在在HTTP消息中,除消息中,除服務器的響應實體內容(如HTML網頁、圖片等)以外以外,其他信息對用戶都是不可見的,要想觀察這些“隱藏隱藏”的信息,需要借助一些工具。 7.2 HTTP協(xié)議2.查看HTTP消息按按F12鍵鍵,打開Chrome瀏覽器的開發(fā)者工具,切換到【Network】頁面,刷新刷新網頁,就可以看到
15、當前網頁從第1個請求開始,依次發(fā)送的所有請求。 7.2 HTTP協(xié)議2.查看HTTP消息基本信息響應頭請求頭查看源格式 7.2 HTTP協(xié)議3.PHP處理過程在瀏覽器與服務器的交互過程交互過程中,Web服務器通過HTTP協(xié)議協(xié)議與瀏覽器進行交互,PHP只只用于處理處理動態(tài)請求。當用戶通過HTML頁面輸入數(shù)據并提交表單后輸入的內容就會從瀏覽器傳送到服務器經過服務器中的PHP程序處理后再將處理后的信息返回給瀏覽器 7.2 HTTP協(xié)議3.PHP處理過程 當瀏覽器向Web服務器發(fā)送一個請求時,Web服務器會對請求做出處理,并返回處理結果。 在這個交互過程中,瀏覽器是通過URL地址來訪問服務器的,并且
16、數(shù)據在傳輸過程中需要遵循HTTP。 當數(shù)據傳輸?shù)絎eb服務器時,Web服務器中的PHP程序會對數(shù)據進行處理,然后將處理好的數(shù)據返回給瀏覽器。 7.2 HTTP協(xié)議3.PHP處理過程HTTP請求請求當在客戶端瀏覽器輸入URL地址后,就會向指定服務器發(fā)起HTTP請求。在請求的同時,會附帶請求消息頭、請求消息體等相關信息。 7.2 HTTP協(xié)議3.PHP處理過程Web服務端服務端處理處理當請求到達服務器后,Apache就會判斷客戶端請求的是靜態(tài)資源還是PHP文件。如果請求的是靜態(tài)資源如HTML、CSS、JavaScript和圖片等文件,Apache就直接在服務器目錄下獲取這些文件。如果請求的是PHP
17、文件,Apache則會將其交給PHP模塊來處理,PHP模塊將處理得到的結果返回給Apache。 7.2 HTTP協(xié)議3.PHP處理過程返回返回HTTP響應數(shù)據響應數(shù)據Apache將獲取到的資源(包括直接獲取的靜態(tài)資源和PHP處理的結果)通過HTTP響應發(fā)送到客戶端瀏覽器。 7.2 HTTP協(xié)議3.PHP處理過程 瀏覽器顯示瀏覽器顯示瀏覽器將服務器返回的資源,包括HTML、CSS、JavaScript和圖片下載到本地,進行解析并顯示。 7.2 HTTP協(xié)議4.HTTP請求消息GET /index.php HTTP/1.1Host: localhostConnection: keep-aliveC
18、ache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Encoding: gzip, deflate, sdchAccept-Lang
19、uage: zh-CN,zh;q=0.8請求行請求頭請求頭結束 7.2 HTTP協(xié)議4.HTTP請求消息每個請求頭都是由頭字段名稱和對應的值構成,中間用冒號“:”和空格分隔。這些頭字段大部分是HTTP規(guī)定的,每個都有特定的用途,一些應用程序也可以添加自定義的字段。 7.2 HTTP協(xié)議4.HTTP請求消息請求行請求行位于請求消息的第一行,如下所示。GET /index.php HTTP/1.1 請求行共分為3個部分,分別是請求方式(GET)、請求資源路徑(/index.php)和HTTP協(xié)議版本(HTTP/1.1) 請求方式有許多種,GET是瀏覽器打開網頁默認使用的方式 請求資源路徑,是指當訪
20、問“http:/域名/index.php”地址時,域名右邊包括參數(shù)的部分 7.2 HTTP協(xié)議4.HTTP請求消息請求行請求方式請求方式含義含義GET獲取“請求資源路徑”對應的資源POST向“請求資源路徑”提交數(shù)據,請求服務器進行處理HEAD獲取“請求資源路徑”的響應消息頭PUT向服務器提交數(shù)據,存儲到“請求資源路徑”的位置DELETE請求服務器刪除“請求資源路徑”的資源TRACE請求服務器回送收到的請求信息,主要用于測試或診斷CONNECT保留將來使用OPTIONS請求查詢服務器的性能,或者查詢與資源相關的選項和需求 7.2 HTTP協(xié)議4.HTTP請求消息請求頭請求頭位于請求行之后,主要用
21、于向服務器傳遞附加消息。例如,瀏覽器可以接受的數(shù)據類型、壓縮方法、語言以及系統(tǒng)環(huán)境。 7.2 HTTP協(xié)議4.HTTP請求消息請求頭請求方式請求方式含義含義Accept客戶端瀏覽器支持的數(shù)據類型Accept-Charset客戶端瀏覽器采用的編碼Accept-Encoding客戶端瀏覽器支持的數(shù)據壓縮格式Accept-Language客戶端瀏覽器所支持的語言包,可以指定多個Host客戶端瀏覽器想要訪問的服務器主機If-Modified-Since客戶端瀏覽器對資源的最后緩存時間Referer客戶端瀏覽器是從哪個頁面過來的User-Agent客戶端的系統(tǒng)信息,包括使用的操作系統(tǒng)、瀏覽器版本號等Co
22、okie客戶端需要帶給服務器的數(shù)據Cache-Control客戶端瀏覽器的緩存控制Connection請求完成后,客戶端希望是保持連接還是關閉連接 7.2 HTTP協(xié)議4.HTTP請求消息實體內容通過POST方式提交表單時,瀏覽器會將用戶填寫的數(shù)據放在實體內容中發(fā)送。表單 7.2 HTTP協(xié)議4.HTTP請求消息實體內容提交表單后,發(fā)送的HTTP請求消息如下。POST /test.php HTTP/1.1Host: localhostContent-Type: application/x-www-form-urlencodedContent-Length: 25name=test&pa
23、ssword=123456HTTP請求消息 7.2 HTTP協(xié)議4.HTTP請求消息實體內容使用使用POST方式提交表單方式提交表單 Content-Type消息頭字段會自動設置為“application/x-www-form-urlencoded”,表示以URL編碼的表單 Content-Length消息頭會自動設置為實體內容的長度(25字節(jié)) 7.2 HTTP協(xié)議5.HTTP響應消息HTTP/1.1 200 OKDate: Wed, 26 Oct 2016 01:15:33 GMTServer: Apache/2.2.25 (Win32) mod_fcgid/2.3.6Vary: Acce
24、pt-Encoding,CookieCache-Control: max-age=3, must-revalidateContent-Length: 18327Content-Type: text/html; charset=UTF-8響應狀態(tài)行響應頭響應頭結束實體內容 7.2 HTTP協(xié)議5.HTTP響應消息響應狀態(tài)行在HTTP響應消息中,位于第一行的是狀態(tài)行,用于告知客戶端本次響應的狀態(tài)HTTP/1.1 200 OK HTTP/1.1是協(xié)議版本 200是狀態(tài)碼 OK是狀態(tài)的描述信息 7.2 HTTP協(xié)議5.HTTP響應消息響應狀態(tài)行響應狀態(tài)碼響應狀態(tài)碼:表示服務器對客戶端請求的各種不同的處
25、理結果和狀態(tài)組成組成:響應狀態(tài)碼由一個三位十進制數(shù)表示分類分類:響應狀態(tài)碼共分為5個類別,通過最高位的15來分類 7.2 HTTP協(xié)議5.HTTP響應消息響應狀態(tài)行l(wèi) 1xx:成功接收請求,要求客戶端繼續(xù)提交下一次請求才能完成整個處理過程l 2xx:成功接收請求并已完成整個處理過程l 3xx:為完成請求,客戶端需進一步細化請求l 4xx:客戶端的請求有錯誤l 5xx:服務器端出現(xiàn)錯誤 7.2 HTTP協(xié)議5.HTTP響應消息響應狀態(tài)行狀態(tài)碼狀態(tài)碼含義含義說明說明200正常客戶端的請求成功,響應消息返回正常的請求結果301永久移動被請求的文檔已經被移動到別處,此文檔的新URL地址為響應頭Loca
26、tion的值,瀏覽器以后對該文檔的訪問會自動使用新地址302找到和301類似,但是Location返回的是一個臨時的、非永久URL地址。304未修改瀏覽器在請求時會通過一些請求頭描述該文檔的緩存情況,當服務器判斷文檔沒有修改時,就通過304告知瀏覽器繼續(xù)使用緩存,否則服務器將使用200狀態(tài)碼返回修改后的新文檔401未經授權當瀏覽器試圖訪問一個受密碼保護的頁面時,且在請求頭中沒有Authorization傳遞用戶信息,就會返回401狀態(tài)碼要求瀏覽器重新發(fā)送帶有Authorization頭的信息403禁止服務器理解客戶端的請求,但是拒絕處理。通常由服務器上文件或目錄的權限設置導致 7.2 HTTP
27、協(xié)議5.HTTP響應消息響應狀態(tài)行狀態(tài)碼狀態(tài)碼含義含義說明說明404找不到服務器上不存在客戶端請求的資源500內部服務器錯誤服務器內部發(fā)生錯誤,無法處理客戶端的請求502無效網關服務器作為網關或者代理訪問上游服務器,但是上游服務器返回了非法響應504網關超時服務器作為網關或者代理訪問上游服務器,但是未能在規(guī)定時間內獲得上游服務器的響應 7.2 HTTP協(xié)議5.HTTP響應消息響應頭響應頭位于響應狀態(tài)行的后面,用于告知瀏覽器本次響應的一個基本信息,包括服務程序名、內容的編碼格式、緩存控制等。 7.2 HTTP協(xié)議5.HTTP響應消息響應頭響應頭響應頭含義含義Server服務器的類型和版本信息Da
28、te服務器的響應時間Expires控制緩存的過期時間Location控制瀏覽器顯示哪個頁面(重定向到新的URL)Accept-Ranges服務器是否支持分段請求,以及請求范圍Cache-Control服務器控制瀏覽器如何進行緩存Content-Disposition服務器控制瀏覽器以下載方式打開文件Content-Encoding實體內容的編碼格式Content-Length實體內容的長度Content-Language實體內容的語言和國家名 7.2 HTTP協(xié)議5.HTTP響應消息響應頭響應頭響應頭含義含義Content-Type實體內容的類型和編碼類型Last-Modified請求文檔的最后一次修改時間Transfer-Encoding文件傳輸編碼Set-Cookie發(fā)送Cookie相關的信息Con
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版智慧城市建設項目投資入股協(xié)議書范本3篇
- 2025年度工錢墊付與勞動保障政策執(zhí)行協(xié)議范本2篇
- 2025版國際能源合作習協(xié)議書3篇
- 2025版小麥種子進出口貿易合同樣本3篇
- 2025年度個人房屋買賣綠色環(huán)保協(xié)議3篇
- 2025-2030全球一次性使用2D儲液袋行業(yè)調研及趨勢分析報告
- 2025年全球及中國濕式無線遠傳智能水表行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2024年秋季江蘇七年級入學分班考試語文模擬卷2(解析版)
- 2024年煤礦安全生產知識競賽題庫及答案(共80題)
- 2025版新能源汽車租賃與保險代理服務合同3篇
- 2024版塑料購銷合同范本買賣
- 2024-2025學年人教新版高二(上)英語寒假作業(yè)(五)
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 2024年安徽省中考數(shù)學試卷含答案
- 2025屆山東省德州市物理高三第一學期期末調研模擬試題含解析
- 2024年滬教版一年級上學期語文期末復習習題
- 兩人退股協(xié)議書范文合伙人簽字
- 2024版【人教精通版】小學英語六年級下冊全冊教案
- 汽車噴漆勞務外包合同范本
- 微項目 探討如何利用工業(yè)廢氣中的二氧化碳合成甲醇-2025年高考化學選擇性必修第一冊(魯科版)
評論
0/150
提交評論