版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第9章PHP的狀態(tài)管理與表單處理9-1PHP狀態(tài)管理的基礎(chǔ)9-2PHP的表單處理9-3文字與密碼方塊9-4文字區(qū)域9-5核取方塊9-6下拉式清單方塊9-7選擇鈕9-8隱藏欄位9-9表單欄位驗證9-1PHP狀態(tài)管理的基礎(chǔ)9-1-1HTTP通訊協(xié)定的特性9-1-2狀態(tài)管理的種類9-1PHP狀態(tài)管理的基礎(chǔ)當(dāng)PHP程式在伺服端執(zhí)行時,因為HTTP通訊協(xié)定並不會保留客戶端的使用者狀態(tài),所以瀏覽不同的PHP程式時,PHP程式需要將使用者狀態(tài)傳遞給下一頁瀏覽的PHP程式,稱為「狀態(tài)管理」(StateManagement)。簡單的說,狀態(tài)管理是在保留客戶端使用者狀態(tài),以便PHP網(wǎng)站可以取得使用者狀態(tài)來正確的執(zhí)行PHP程式。9-1-1HTTP通訊協(xié)定的特性HTTP通訊協(xié)定不會持續(xù)保持連線:只有當(dāng)瀏覽程式提出請求時才會建立連線,在請求後就斷線等待回應(yīng),每一次請求和回應(yīng)都需事先建立連線。HTTP通訊協(xié)定並不會保留狀態(tài):因為HTTP通訊協(xié)定並不會保持連線,所以在連線時,伺服端和客戶端互相知道對方,一旦請求結(jié)束,就互不相干,使用者狀態(tài)並不會保留。HTTP通訊協(xié)定與資料類型無關(guān):任何種類的資料都可以透過HTTP通訊協(xié)定傳送到客戶端,這就是Content-Type標(biāo)頭資訊指定的MIME資料類型。9-1-2狀態(tài)管理的種類-說明狀態(tài)管理(StateManagement)是在PHP程式間傳遞資料,以便不同PHP程式能夠保留使用者狀態(tài)。狀態(tài)管理以狀態(tài)資訊儲存的位置,可以區(qū)分成兩大類:儲存在客戶端儲存在伺服端9-1-2狀態(tài)管理的種類-客戶端的狀態(tài)管理客戶端的狀態(tài)管理是將資料儲存在使用者電腦,或是儲存在HTML網(wǎng)頁或PHP程式建立的HTML標(biāo)籤中,以便將資料傳遞給下一頁PHP程式,常用的方法如下表所示:9-1-2狀態(tài)管理的種類-伺服端的狀態(tài)管理伺服端的狀態(tài)管理是將資料儲存在伺服端的電腦,換句話說,狀態(tài)管理的使用者狀態(tài)資訊會佔用伺服器的資源,常用的方法如下表所示:9-2PHP的表單處理與URL參數(shù)9-2-1網(wǎng)頁表單的用途9-2-2HTML標(biāo)籤建立網(wǎng)頁表單9-2-3$_POST與$_GET結(jié)合陣列變數(shù)9-2-4URL參數(shù)傳遞資料9-2-1網(wǎng)頁表單的用途PHP程式是在伺服端執(zhí)行,換句話說,客戶端網(wǎng)頁只負(fù)責(zé)取得使用者輸入的資料,然後將輸入資料送到伺服端進行處理,使用的是HTML網(wǎng)頁表單,如下圖所示:9-2-2HTML標(biāo)籤建立網(wǎng)頁表單-標(biāo)籤在HTML標(biāo)籤關(guān)於網(wǎng)頁表單的標(biāo)籤只有五個,如下表所示:9-2-2HTML標(biāo)籤建立網(wǎng)頁表單-架構(gòu)<formname="name"method="post|get"action="URL"enctype="MIME"><inputtype=…><textarea>….</textarea><select><option>….</option></select><inputtype="submit"…></form>9-2-2HTML標(biāo)籤建立網(wǎng)頁表單-<form>標(biāo)籤的屬性name屬性:表單名稱。method屬性:設(shè)定資料送出方式,如下:<formname="order"method="post"></form>action屬性:設(shè)定PHP表單處理程式所在的路徑,也可以是URL網(wǎng)址,如下所示:<formname="order"method="post"action="Ch9-3-2.php"></form>enctype屬性:設(shè)定表單資料傳送時的編碼方式。9-2-3$_POST與$_GET結(jié)合陣列變數(shù)-說明PHP的表單處理是使用PHP的「預(yù)定變數(shù)」(PredefinedVariables)取得欄位資料,預(yù)定變數(shù)不同於使用者宣告的變數(shù),屬於PHP引擎建立的變數(shù)。PHP關(guān)於表單處理的預(yù)定變數(shù)是一種預(yù)設(shè)擁有全域變數(shù)範(fàn)圍的結(jié)合陣列變數(shù),一共有2個,其說明如下表所示:9-2-3$_POST與$_GET結(jié)合陣列變數(shù)-範(fàn)例例如:網(wǎng)頁表單擁有名為Username的欄位,在PHP程式碼可以使用上表的預(yù)定變數(shù)取得欄位值,如下所示:$name=$_POST["Username"];$name=$_GET["Username"];上述程式碼可以取得結(jié)合陣列的元素值,即欄位輸入的內(nèi)容。9-2-3$_POST與$_GET結(jié)合陣列變數(shù)-使用PHP程式碼到底是使用$_POST或$_GET變數(shù),需視HTML表單<form>標(biāo)籤的method屬性值而定,如下表所示:9-2-4URL參數(shù)傳遞資料-<a>標(biāo)籤PHP除了可以使用本章後的表單來傳遞資料外,還可以使用超連結(jié)URL參數(shù)或是header()函數(shù)(詳見第10章的說明)轉(zhuǎn)址傳送資料給其他PHP程式,如下所示:<ahref="Ch9-2-4.php?Username=陳會安&Password=5678">登入網(wǎng)站</a><a>標(biāo)籤的超連結(jié)傳遞Username和Password一共兩個參數(shù)。9-2-4URL參數(shù)傳遞資料-取得參數(shù)值PHP程式取得超連結(jié)傳遞參數(shù)如同表單的get方法,可以使用$_GET陣列變數(shù)取得參數(shù)或欄位值,如下所示:$username=$_GET["Username"];$pass=$_GET["Password"];9-3文字與密碼方塊9-3-1文字與密碼方塊欄位9-3-2取得文字與密碼方塊欄位的內(nèi)容9-3-1文字與密碼方塊欄位-語法文字和密碼方塊都可以輸入一段文字內(nèi)容,唯一的差別在於密碼欄位輸入的資料並不會顯示出來,而是使用小圓點或「*」星號代替,其基本語法如下所示:<inputtype="text|password"name="Name"maxlength=valuereadonly=False|Truesize="Value"value="String">9-3-1文字與密碼方塊欄位-屬性語法的屬性說明,如下表所示:9-3-2取得文字與密碼方塊欄位的內(nèi)容在建立好文字與密碼方塊的HTML表單後,我們就可以撰寫PHP程式取得欄位內(nèi)容。文字與密碼欄位是直接將輸入資料傳到伺服器,PHP程式只需使用$_POST結(jié)合陣列變數(shù)就可以取得欄位內(nèi)容,如下所示:$username=$_POST["User"];$password=$_POST["Pass"];上述程式碼的陣列鍵值是表單欄位的名稱屬性name,分別為:User文字方塊和Pass密碼方塊的內(nèi)容。9-4文字區(qū)域9-4-1文字區(qū)域欄位9-4-2取得文字區(qū)域欄位的內(nèi)容9-4-1文字區(qū)域欄位-語法當(dāng)需要輸入整個段落或整篇文字時,我們就可以在表單使用文字區(qū)域欄位,其基本語法如下所示:<textareaname="Name"rows=valuecols=valuewrap=off|virtual|physicalvalue="String"></textarea>9-4-1文字區(qū)域欄位-屬性語法的屬性說明,如下表所示:9-4-2取得文字區(qū)域欄位的內(nèi)容在建立文字區(qū)域欄位的HTML表單後,就可以撰寫PHP程式取得欄位內(nèi)容,如下所示:$msg=$_POST["Message"];print"意見:<br>".nl2br($msg)."<br>";上述程式碼取得名為Message文字區(qū)域的內(nèi)容,因為HTML標(biāo)籤顯示欄位內(nèi)容時,並不會顯示換行,所以呼叫nl2br()函數(shù)將換行符號\n替換成<br>換行標(biāo)籤。9-5核取方塊9-5-1核取方塊欄位9-5-2取得核取方塊欄位的內(nèi)容9-5-1核取方塊欄位-語法表單欄位的核取方塊如同一個開關(guān),可以勾選或取消勾選來設(shè)定是否使用此功能,其基本語法如下所示:<inputtype="checkbox"name="Name"checkedvalue="String">9-5-1核取方塊欄位-屬性語法的屬性說明,如下表所示:9-5-2取得核取方塊欄位的內(nèi)容核取方塊在表單扮演的角色是一個開關(guān),PHP程式取得核取方塊欄位內(nèi)容是使用isset()檢查欄位是否勾選,傳回值是欄位的value屬性值,如下所示:if(isset($_POST["ie"]))print"使用InternetExplorer<br>";上述if條件檢查ie核取方塊是否被勾選,如果isset()傳回true,就表示使用者勾選核取方塊,每一個核取方塊都可以使用相同方式進行檢查。9-6下拉式清單方塊9-6-1下拉式清單方塊欄位9-6-2取得下拉式清單方塊欄位的內(nèi)容9-6-3取得清單方塊欄位的內(nèi)容9-6-1下拉式清單方塊欄位-種類下拉式清單方塊:當(dāng)size屬性值為1時只顯示一個選項,需要按右邊▼鈕才能顯示其他選項,如下圖所示:清單方塊:和下拉式清單方塊一樣,只不過顯示的選項不只一個,size屬性為顯示的選項數(shù),如果選項太多超過清單方塊尺寸,視窗就會出現(xiàn)捲動軸幫助檢視選項,如下圖所示:9-6-1下拉式清單方塊欄位-語法HTML的<select>標(biāo)籤需要配合<option>標(biāo)籤的選項,才能建立下拉式清單方塊欄位,其基本語法,如下所示:<selectname="Name"multiplesize=number><optionvalue="Item_Name">選項名稱</option><optionvalue="Item_Name"selected>選項名稱</option>…..</select>9-6-1下拉式清單方塊欄位-屬性<select>標(biāo)籤的屬性說明,如下表所示:<option>標(biāo)籤的屬性說明,如下表所示:9-6-2取得下拉式清單方塊欄位的內(nèi)容下拉式清單方塊欄位會將<option>選項標(biāo)籤屬性value的值傳送到伺服器,在PHP程式是使用$_POST結(jié)合陣列取得欄位內(nèi)容,如下所示:$gender=$_POST["Gender"];上述程式碼取得下拉式清單方塊Gender的值,此值就是使用者選擇選項的value屬性值。9-6-3取得清單方塊欄位的內(nèi)容-標(biāo)籤清單方塊如果是單選,PHP處理程式取得選擇的方式和下拉式清單方塊相同,如果是複選的清單方塊欄位,HTML表單標(biāo)籤的欄位名稱是一個陣列,如下所示:<selectname="Webs[]"size="4"multiple>……</select>上述<select>標(biāo)籤的name屬性為Webs[],表示PHP取得的欄位值是一個陣列,接著我們可以使用if或switch條件敘述來判斷使用者的選擇。9-6-3取得清單方塊欄位的內(nèi)容-取得欄位內(nèi)容在PHP程式一樣是使用$_POST取得欄位內(nèi)容,只不過取得的欄位內(nèi)容是一個陣列,如下所示:$webs=$_POST["Webs"];上述程式碼取得清單方塊欄位Webs[]的陣列值,可以使用foreach迴圈配合switch條件進一步判斷使用者複選的選項。9-7選擇鈕9-7-1選擇鈕欄位9-7-2取得選擇鈕欄位的內(nèi)容9-7-1選擇鈕欄位-語法選擇鈕能夠在表單設(shè)計一組選項,每一個選項名稱旁有一個圓形的選項鈕,屬於多選一的單選題,其基本語法如下所示:<inputtype="radio"name="Name"checkedvalue="String">9-7-1選擇鈕欄位-屬性語法的屬性說明,如下表所示:9-7-2取得選擇鈕欄位的內(nèi)容選擇鈕欄位是一個單選題,其處理方式和單選的下拉式清單方塊相同,也是將標(biāo)籤屬性value值傳送到伺服器,使用$_POST結(jié)合陣列取得選擇鈕欄位的內(nèi)容,如下所示:$gender=$_POST["Gender"];上述程式碼取得選擇鈕Gender的值,此值是選取選項的value屬性值,換句話說,依屬性值就可進一步使用if或switch條件敘述判斷使用者的選擇。9-8隱藏欄位9-8-1隱藏欄位9-8-2取得隱藏欄位的內(nèi)容9-8-1隱藏欄位隱藏欄位並不需使用者輸入資料,而是直接將value屬性值傳送到伺服端,通常是用來傳送表單的環(huán)境參數(shù),或是在不同網(wǎng)頁表單間傳遞資料,其基本語法如下所示:<inputtype="hidden"name="Name"value="String">上述語法的屬性說明,如下表所示:9-8-2取得隱藏欄位的內(nèi)容隱藏欄位和文字或密碼方塊一樣,在伺服端只需使用$_POST結(jié)合陣列就可以取得隱藏欄位的內(nèi)容,如下所示:$order=$_POST["Order"];上述程式碼取得名為Order的隱藏欄位值,傳送的是欄位屬性value的值。9-9表單欄位驗證9-9-1PHP程式如何驗證表單9-9-2表單欄位驗證9-9-1PHP程式如何驗證表單-說明在PHP程式取得表單欄位資料並不困難,事實上,我們反而需要多考量使用者輸入的資料是否符合需求,在處理取得的資料前進行欄位資料的驗證,檢查使用者輸入的資料是否符合所需的格式。當(dāng)PHP程式使用$_POST或$_GET結(jié)合陣列取得欄位資料後,在真正處理資料前,我們可以使用if等條件敘述檢查使用者輸入的欄位資料是否正確,或資料是否空白,表示使用者忘了輸入欄位資料。9-9-1PHP程式如何驗證表單-流程圖如果使用者輸入的資料有錯誤,PHP程式並不進行資料處理,而是顯示錯誤訊息,然後回到表單網(wǎng)頁要求使用者重新輸入,表單欄位驗證的流程圖,如下圖所示:9-9-1PHP程式如何驗證表單-實作在實作表單欄位驗證時,我們可以使用兩個PHP程式:一是表單網(wǎng)頁顯示錯誤訊息,一是PHP處理程式,當(dāng)錯誤產(chǎn)生時,就使用h
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025~2026學(xué)年山東省濟南市天橋區(qū)七年級英語第一學(xué)期期末考試試題(含答案無聽力原文及音頻)
- 五年級下冊語文期末試卷及答案
- 無領(lǐng)導(dǎo)小組題目及答案
- 初中數(shù)學(xué)知識樹說課課件
- 2022~2023臨床執(zhí)業(yè)醫(yī)師考試題庫及答案第465期
- 微型小說三題微型小說《在》
- 2022~2023專升本考試題庫及答案第411期
- 二氧化碳?xì)怏w保護焊技術(shù)要點
- 臨猗事業(yè)編招聘2022年考試模擬試題及答案解析6
- 施工能力考試題及答案
- 2026年《必背60題》酒店前廳接待經(jīng)理高頻面試題包含詳細(xì)解答
- 廣東省廣州市海珠區(qū)2024-2025學(xué)年七年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 地下消防水池設(shè)備安裝方案
- 超聲波技術(shù)協(xié)議書
- 眼內(nèi)炎術(shù)后護理與康復(fù)
- GB/T 5784-2025緊固件六角頭螺栓細(xì)桿B級
- DB51-T 3313-2025 同步攤鋪超薄瀝青混凝土施工技術(shù)規(guī)程
- 雨課堂學(xué)堂在線學(xué)堂云《城市規(guī)劃理論與方法(江蘇師大 )》單元測試考核答案
- 高邊坡施工測量方案設(shè)計
- 浙江省寧波市鄞州區(qū)2024-2025學(xué)年三年級上冊期末考試數(shù)學(xué)試卷(含答案)
- 裝修公司居間合同范本
評論
0/150
提交評論