版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章 PHP的狀態管理與表單處理,9-1 PHP狀態管理的基礎 9-2 PHP的表單處理 9-3 文字與密碼方塊 9-4 文字區域 9-5 核取方塊 9-6 下拉式清單方塊 9-7 選擇鈕 9-8 隱藏欄位 9-9 表單欄位驗證,9-1 PHP狀態管理的基礎,9-1-1 HTTP通訊協定的特性 9-1-2 狀態管理的種類,9-1 PHP狀態管理的基礎,當PHP程式在伺服端執行時,因為HTTP通訊協定並不會保留客戶端的使用者狀態。 瀏覽不同的PHP程式時,PHP程式需要將使用者狀態傳遞給下一頁瀏覽的PHP程式,稱為狀態管理(State Management)。,9-1-1 HTTP通訊協定的特
2、性,HTTP通訊協定不會持續保持連線:只有當瀏覽程式提出請求時才會建立連線,在請求後就斷線等待回應,每一次請求和回應都需事先建立連線。 HTTP通訊協定並不會保留狀態:因為HTTP通訊協定並不會保持連線,所以在連線時,伺服端和客戶端互相知道對方,一旦請求結束,就互不相干,使用者狀態並不會保留。 HTTP通訊協定與資料類型無關:任何種類的資料都可以透過HTTP通訊協定傳送到客戶端,這就是Content-Type標頭資訊指定的MIME資料類型。,9-1-2 狀態管理的種類-說明,狀態管理(State Management)是在PHP程式間傳遞資料,以便不同PHP程式能夠保留使用者狀態。狀態管理以狀
3、態資訊儲存的位置,可以區分成兩大類: 儲存在客戶端 儲存在伺服端,9-1-2 狀態管理的種類-客戶端的狀態管理,客戶端的狀態管理是將資料儲存在使用者電腦,或是儲存在HTML網頁或PHP程式建立的HTML標籤中,以便將資料傳遞給下一頁PHP程式:,9-1-2 狀態管理的種類-伺服端的狀態管理,伺服端的狀態管理是將資料儲存在伺服端的電腦,換句話說,狀態管理的使用者狀態資訊會佔用伺服器的資源:,9-2 PHP的表單處理與URL參數,9-2-1 網頁表單的用途 9-2-2 HTML標籤建立網頁表單 9-2-3 $_POST與$_GET結合陣列變數 9-2-4 URL參數傳遞資料,9-2-1 網頁表單的
4、用途,PHP程式是在伺服端執行,換句話說,客戶端網頁只負責取得使用者輸入的資料,然後將輸入資料送到伺服端進行處理,使用的是HTML網頁表單:,9-2-2 HTML標籤建立網頁表單-標籤,在HTML標籤關於網頁表單的標籤只有五個:,9-2-2 HTML標籤建立網頁表單-架構, . . ,9-2-2 HTML標籤建立網頁表單-標籤的屬性,name屬性:表單名稱。 method屬性:設定資料送出方式,如下: action屬性:設定PHP表單處理程式所在的路徑,也可以是URL網址: enctype屬性:設定表單資料傳送時的編碼方式。,9-2-3 $_POST與$_GET結合陣列變數-說明,PHP的表單
5、處理是使用PHP的預定變數(Predefined Variables)取得欄位資料,預定變數不同於使用者宣告的變數,屬於PHP引擎建立的變數。 PHP關於表單處理的預定變數是一種預設擁有全域變數範圍的結合陣列變數,一共有2個:,9-2-3 $_POST與$_GET結合陣列變數-範例,例如:網頁表單擁有名為Username的欄位,在PHP程式碼可以使用上表的預定變數取得欄位值: $name = $_POSTUsername; $name = $_GETUsername; 上述程式碼可以取得結合陣列的元素值,即欄位輸入的內容。,9-2-3 $_POST與$_GET結合陣列變數-使用,PHP程式碼到
6、底是使用$_POST或$_GET變數,需視HTML表單標籤的method屬性值而定:,9-2-4 URL參數傳遞資料-標籤,PHP除了可以使用本章後的表單來傳遞資料外,還可以使用超連結URL參數或是header()函數(詳見第10章的說明)轉址傳送資料給其他PHP程式: 登入網站,9-2-4 URL參數傳遞資料-取得參數值,PHP程式取得超連結傳遞參數如同表單的get方法,可以使用$_GET陣列變數取得參數或欄位值: $username = $_GETUsername; $pass = $_GETPassword;,9-3 文字與密碼方塊,9-3-1 文字與密碼方塊欄位 9-3-2 取得文字與
7、密碼方塊欄位的內容,9-3-1 文字與密碼方塊欄位-語法,文字和密碼方塊都可以輸入一段文字內容,唯一的差別在於密碼欄位輸入的資料並不會顯示出來,而是使用小圓點或*星號代替: ,9-3-1 文字與密碼方塊欄位-屬性,語法的屬性說明,如下表所示:,9-3-2 取得文字與密碼方塊欄位的內容,在建立好文字與密碼方塊的HTML表單後,我們就可以撰寫PHP程式取得欄位內容。文字與密碼欄位是直接將輸入資料傳到伺服器,PHP程式只需使用$_POST結合陣列變數就可以取得欄位內容: $username = $_POSTUser; $password = $_POSTPass; 上述程式碼的陣列鍵值是表單欄位的名
8、稱屬性name,:User文字方塊和Pass密碼方塊的內容。,9-4 文字區域,9-4-1 文字區域欄位 9-4-2 取得文字區域欄位的內容,9-4-1 文字區域欄位-語法,當需要輸入整個段落或整篇文字時,我們就可以在表單使用文字區域欄位,其基本語法如下所示: ,9-4-1 文字區域欄位-屬性,語法的屬性說明,如下表所示:,9-4-2 取得文字區域欄位的內容,在建立文字區域欄位的HTML表單後,就可以撰寫PHP程式取得欄位內容: $msg = $_POSTMessage; print 意見:.nl2br($msg).; 上述程式碼取得名為Message文字區域的內容,因為HTML標籤顯示欄位內
9、容時,並不會顯示換行,所以呼叫nl2br()函數將換行符號n替換成換行標籤。,9-5 核取方塊,9-5-1 核取方塊欄位 9-5-2 取得核取方塊欄位的內容,9-5-1 核取方塊欄位-語法,表單欄位的核取方塊如同一個開關,可以勾選或取消勾選來設定是否使用此功能: ,9-5-1 核取方塊欄位-屬性,語法的屬性說明:,9-5-2 取得核取方塊欄位的內容,核取方塊在表單扮演的角色是一個開關,PHP程式取得核取方塊欄位內容是使用isset()檢查欄位是否勾選,傳回值是欄位的value屬性值: if (isset($_POSTie) print 使用Internet Explorer; if條件檢查ie
10、核取方塊是否被勾選,如果isset()傳回true,就表示使用者勾選核取方塊。,9-6 下拉式清單方塊,9-6-1 下拉式清單方塊欄位 9-6-2 取得下拉式清單方塊欄位的內容 9-6-3 取得清單方塊欄位的內容,9-6-1 下拉式清單方塊欄位-種類,下拉式清單方塊:當size屬性值為1時只顯示一個選項,需要按右邊鈕才能顯示其他選項: 清單方塊:和下拉式清單方塊一樣,只不過顯示的選項不只一個,size屬性為顯示的選項數,如果選項太多超過清單方塊尺寸,視窗就會出現捲動軸幫助檢視選項:,9-6-1 下拉式清單方塊欄位-語法,HTML的標籤需要配合標籤的選項,才能建立下拉式清單方塊欄位: 選項名稱
11、選項名稱 . ,9-6-1 下拉式清單方塊欄位-屬性,標籤的屬性說明: 標籤的屬性說明,如下表所示:,9-6-2 取得下拉式清單方塊欄位的內容,下拉式清單方塊欄位會將選項標籤屬性value的值傳送到伺服器,在PHP程式是使用$_POST結合陣列取得欄位內容: $gender = $_POSTGender; 上 述程式碼取得下拉式清單方塊Gender的值,此值就是使用者選擇選項的value屬性值。,9-6-3 取得清單方塊欄位的內容-標籤,清單方塊如果是單選,PHP處理程式取得選擇的方式和下拉式清單方塊相同,如果是複選的清單方塊欄位,HTML表單標籤的欄位名稱是一個陣列: 上述標籤的name屬性
12、為Webs,表示PHP取得的欄位值是一個陣列,接著我們可以使用if或switch條件敘述來判斷使用者的選擇。,9-6-3 取得清單方塊欄位的內容-取得欄位內容,在PHP程式一樣是使用$_POST取得欄位內容,只不過取得的欄位內容是一個陣列: $webs = $_POSTWebs; 上述程式碼取得清單方塊欄位Webs的陣列值,可以使用foreach迴圈配合switch條件進一步判斷使用者複選的選項。,9-7 選擇鈕,9-7-1 選擇鈕欄位 9-7-2 取得選擇鈕欄位的內容,9-7-1 選擇鈕欄位-語法,選擇鈕能夠在表單設計一組選項,每一個選項名稱旁有一個圓形的選項鈕,屬於多選一的單選題: ,9-
13、7-1 選擇鈕欄位-屬性,語法的屬性說明,如下表所示:,9-7-2 取得選擇鈕欄位的內容,選擇鈕欄位是一個單選題,其處理方式和單選的下拉式清單方塊相同,也是將標籤屬性value值傳送到伺服器,使用$_POST結合陣列取得選擇鈕欄位的內容: $gender = $_POSTGender; 上述程式碼取得選擇鈕Gender的值,此值是選取選項的value屬性值,換句話說,依屬性值就可進一步使用if或switch條件敘述判斷使用者的選擇。,9-8 隱藏欄位,9-8-1 隱藏欄位 9-8-2 取得隱藏欄位的內容,9-8-1 隱藏欄位,隱藏欄位並不需使用者輸入資料,而是直接將value屬性值傳送到伺服端
14、,通常是用來傳送表單的環境參數,或是在不同網頁表單間傳遞資料: 上述語法的屬性說明:,9-8-2 取得隱藏欄位的內容,隱藏欄位和文字或密碼方塊一樣,在伺服端只需使用$_POST結合陣列就可以取得隱藏欄位的內容: $order = $_POSTOrder; 上述程式碼取得名為Order的隱藏欄位值,傳送的是欄位屬性value的值。,9-9 表單欄位驗證,9-9-1 PHP程式如何驗證表單 9-9-2 表單欄位驗證,9-9-1 PHP程式如何驗證表單-說明,在PHP程式取得表單欄位資料並不困難,事實上,我們反而需要多考量使用者輸入的資料是否符合需求,在處理取得的資料前進行欄位資料的驗證,檢查使用者
15、輸入的資料是否符合所需的格式。 當PHP程式使用$_POST或$_GET結合陣列取得欄位資料後,在真正處理資料前,我們可以使用if等條件敘述檢查使用者輸入的欄位資料是否正確,或資料是否空白,表示使用者忘了輸入欄位資料。,9-9-1 PHP程式如何驗證表單-流程圖,如果使用者輸入的資料有錯誤,PHP程式並不進行資料處理,而是顯示錯誤訊息,然後回到表單網頁要求使用者重新輸入,表單欄位驗證的流程圖:,9-9-1 PHP程式如何驗證表單-實作,在實作表單欄位驗證時,我們可以使用兩個PHP程式:一是表單網頁顯示錯誤訊息,一是PHP處理程式,當錯誤產生時,就使用header()轉址回網頁表單(header()的說明請參閱第10章)。 另一種方式是將表單和PHP處理程式寫在同一個PHP程式,使用if條件判斷是否是表單送回,如果是,再進行表單欄位驗證和處理。在下一節筆者準備使用此方式建立表單欄位驗證。,9-9-2 表單欄位驗證-判斷是否是表單送回,PHP程式進行欄位驗證時,因為表單和處理程式寫在同一個程式檔案,所以PHP程式需要判斷顯示表單內容,或是輸入資料後的表單送回,可以執行表單欄位驗證: if ( isset($_GETReg) ) / 表單處理 上述if條件可以判斷使用者是否按下表單按鈕,因為表單使用get方法,所以在PH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 眼科屈光手术医师考试试卷及答案
- 研学基地餐饮配餐管理员岗位招聘考试试卷及答案
- 烟草梗丝膨化调试技师(中级)考试试卷及答案
- 2026年浙江省建德市高二生物下册期末考试模拟卷及答案(必刷)
- 2026年浙江省兰溪市高二生物下册期末考试测试卷及答案【各地真题】
- 2025年黑龙江省海林市高二生物下册期末考试模拟卷及参考答案(培优B卷)
- 2025年黑龙江省海伦市高二生物下册期末考试检测卷及完整答案1套
- 2026年 高二生物下册期末考试测试卷及答案【各地真题】
- 2026年广东省四会市高二生物下册期末考试模拟卷附参考答案(突破训练)
- 2026年河北省辛集市高二生物下册期末考试测试卷及答案【基础+提升】
- 2026年教师职业能力测评题库及答案
- 2026江苏苏州工业园区综合执法系统招聘工作人员20人考试参考试题及答案解析
- 2025年福建省福州市八年级地理生物会考真题试卷(含答案)
- 航空油料化验员职业能力考核复习题库(附答案)
- 2026江苏连云港市东海县事业单位统一招聘15人笔试参考题库及答案解析
- 油品储运调和操作工(技师)职业技能鉴定考试题及答案
- 环保行业财务分析特点报告
- 半导体厂务项目工程管理 课件 项目1 任务1.1半导体厂务项目工程管理概述
- 2025重庆市消防救援总队机关及直属单位政府专职消防员招录113人(公共基础知识)综合能力测试题附答案解析
- 四川省成都市2026届高二上期期末统一调研考试生物答案
- 漂浮式海底锚桩施工方案
评论
0/150
提交评论