PHP的状态管理与表单处理_第1页
PHP的状态管理与表单处理_第2页
PHP的状态管理与表单处理_第3页
PHP的状态管理与表单处理_第4页
PHP的状态管理与表单处理_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、9-1 PHP狀態管理的基礎 9-1-1 HTTP通訊協定的特性 9-1-2 狀態管理的種類9-1 PHP狀態管理的基礎 當PHP程式在伺服端執行時,因為HTTP通訊協定並不會保留客戶端的使用者狀態。 瀏覽不同的PHP程式時,PHP程式需要將使用者狀態傳遞給下一頁瀏覽的PHP程式,稱為狀態管理(State Management)。9-1-1 HTTP通訊協定的特性 HTTP通訊協定不會持續保持連線:只有當瀏覽程式提出請求時才會建立連線,在請求後就斷線等待回應,每一次請求和回應都需事先建立連線。 HTTP通訊協定並不會保留狀態:因為HTTP通訊協定並不會保持連線,所以在連線時,伺服端和客戶端互相

2、知道對方,一旦請求結束,就互不相干,使用者狀態並不會保留。 HTTP通訊協定與資料類型無關:任何種類的資料都可以透過HTTP通訊協定傳送到客戶端,這就是Content-Type標頭資訊指定的MIME資料類型。9-1-2 狀態管理的種類-說明 狀態管理(State Management)是在PHP程式間傳遞資料,以便不同PHP程式能夠保留使用者狀態。狀態管理以狀態資訊儲存的位置,可以區分成兩大類: 儲存在客戶端 儲存在伺服端9-1-2 狀態管理的種類-客戶端的狀態管理 客戶端的狀態管理是將資料儲存在使用者電腦,或是儲存在HTML網頁或PHP程式建立的HTML標籤中,以便將資料傳遞給下一頁PHP程

3、式:使用方法使用方法說明說明表單欄位使用 HTML 表單欄位內容傳遞資料到其他 PHP 程式URL 參數使用 URL 網址的參數來傳遞資料CookiesCookies 是保留在使用者電腦的小檔案,檔案內容是一些執行時所需的使用者資訊9-1-2 狀態管理的種類-伺服端的狀態管理 伺服端的狀態管理是將資料儲存在伺服端的電腦,換句話說,狀態管理的使用者狀態資訊會佔用伺服器的資源:使用方法使用方法說明說明Session 變數使用 Session 變數儲存使用者資料文字檔案使用伺服端的文字檔案來儲存使用者資料資料庫使用資料庫的記錄儲存使用者資料XML 文件使用 XML 文件儲存使用者資料9-2 PHP的

4、表單處理與URL參數 9-2-1 網頁表單的用途 9-2-2 HTML標籤建立網頁表單 9-2-3 $_POST與$_GET結合陣列變數 9-2-4 URL參數傳遞資料9-2-1 網頁表單的用途 PHP程式是在伺服端執行,換句話說,客戶端網頁只負責取得使用者輸入的資料,然後將輸入資料送到伺服端進行處理,使用的是HTML網頁表單:9-2-2 HTML標籤建立網頁表單-標籤 在HTML標籤關於網頁表單的標籤只有五個:表單標籤表單標籤說明說明 HTML 表單標籤輸入或選擇資料的表單欄位,包含按鈕和文字方塊欄位,不同 type 屬性表示不同的欄位 . 建立選單欄位,內含標籤的選項 . 選單欄位的選項

5、. 文字區域欄位9-2-2 HTML標籤建立網頁表單-架構 . . 9-2-2 HTML標籤建立網頁表單-標籤的屬性 name屬性:表單名稱。 method屬性:設定資料送出方式,如下: action屬性:設定PHP表單處理程式所在的路徑,也可以是URL網址: enctype屬性:設定表單資料傳送時的編碼方式。9-2-3 $_POST與$_GET結合陣列變數-說明 PHP的表單處理是使用PHP的預定變數(Predefined Variables)取得欄位資料,預定變數不同於使用者宣告的變數,屬於PHP引擎建立的變數。 PHP關於表單處理的預定變數是一種預設擁有全域變數範圍的結合陣列變數,一共有

6、2個:預定變數預定變數說明說明$_POST結合陣列變數,儲存透過 HTTP POST 方法傳入 PHP 程式檔案的表單欄位資料,鍵值是欄位名稱$_GET結合陣列變數,儲存透過 HTTP GET 方法傳入 PHP 程式檔案的表單欄位資料,鍵值是欄位名稱9-2-3 $_POST與$_GET結合陣列變數-範例 例如:網頁表單擁有名為Username的欄位,在PHP程式碼可以使用上表的預定變數取得欄位值:$name = $_POSTUsername;$name = $_GETUsername; 上述程式碼可以取得結合陣列的元素值,即欄位輸入的內容。9-2-3 $_POST與$_GET結合陣列變數-使用

7、 PHP程式碼到底是使用$_POST或$_GET變數,需視HTML表單標籤的method屬性值而定:method 屬性值屬性值PHP 程式使用的結合陣列變數程式使用的結合陣列變數POST 或 post$_POSTGET 或 get$_GET9-2-4 URL參數傳遞資料-標籤 PHP除了可以使用本章後的表單來傳遞資料外,還可以使用超連結URL參數或是header()函數(詳見第10章的說明)轉址傳送資料給其他PHP程式:登入網站9-2-4 URL參數傳遞資料-取得參數值 PHP程式取得超連結傳遞參數如同表單的get方法,可以使用$_GET陣列變數取得參數或欄位值:$username = $_G

8、ETUsername;$pass = $_GETPassword;9-3 文字與密碼方塊 9-3-1 文字與密碼方塊欄位 9-3-2 取得文字與密碼方塊欄位的內容9-3-1 文字與密碼方塊欄位-語法 文字和密碼方塊都可以輸入一段文字內容,唯一的差別在於密碼欄位輸入的資料並不會顯示出來,而是使用小圓點或*星號代替: 9-3-1 文字與密碼方塊欄位-屬性 語法的屬性說明,如下表所示:屬性屬性說明說明type屬性值 text 為文字方塊,password 為密碼方塊name欄位名稱maxlength使用者允許輸入的最大字元個數,預設值 0 表示不限長度readonly欄位是否為唯讀,預設為 Fals

9、e 表示允許輸入,如為 True 表示唯讀,不能輸入資料size設定欄位顯示的寬度有多少個字元value設定欄位的預設值9-3-2 取得文字與密碼方塊欄位的內容 在建立好文字與密碼方塊的HTML表單後,我們就可以撰寫PHP程式取得欄位內容。文字與密碼欄位是直接將輸入資料傳到伺服器,PHP程式只需使用$_POST結合陣列變數就可以取得欄位內容:$username = $_POSTUser;$password = $_POSTPass; 上述程式碼的陣列鍵值是表單欄位的名稱屬性name,:User文字方塊和Pass密碼方塊的內容。9-4 文字區域 9-4-1 文字區域欄位 9-4-2 取得文字區域

10、欄位的內容9-4-1 文字區域欄位-語法 當需要輸入整個段落或整篇文字時,我們就可以在表單使用文字區域欄位,其基本語法如下所示:9-4-1 文字區域欄位-屬性 語法的屬性說明,如下表所示:屬性屬性說明說明name欄位名稱rows欄位可以輸入幾列cols欄位的每列有幾個字wrap設定顯示和送出時的換行方式,off 為不換行,virtual 為自動換行,但輸出時仍然為一列,physical 也是自動換行,不過輸出時同時也會換行value欄位的預設值9-4-2 取得文字區域欄位的內容 在建立文字區域欄位的HTML表單後,就可以撰寫PHP程式取得欄位內容:$msg = $_POSTMessage;pr

11、int 意見:.nl2br($msg).; 上述程式碼取得名為Message文字區域的內容,因為HTML標籤顯示欄位內容時,並不會顯示換行,所以呼叫nl2br()函數將換行符號n替換成換行標籤。9-5 核取方塊 9-5-1 核取方塊欄位 9-5-2 取得核取方塊欄位的內容9-5-1 核取方塊欄位-語法 表單欄位的核取方塊如同一個開關,可以勾選或取消勾選來設定是否使用此功能:9-5-1 核取方塊欄位-屬性 語法的屬性說明:屬性屬性說明說明type屬性值 checkbox 為核取方塊name欄位名稱checked此屬性沒有參數值,加上屬性名稱表示預設勾選value勾選後表單送出的值,在送出表單時,

12、如果是沒有勾選的核取方塊,這個值會被忽略掉9-5-2 取得核取方塊欄位的內容 核取方塊在表單扮演的角色是一個開關,PHP程式取得核取方塊欄位內容是使用isset()檢查欄位是否勾選,傳回值是欄位的value屬性值:if (isset($_POSTie) print 使用Internet Explorer; if條件檢查ie核取方塊是否被勾選,如果isset()傳回true,就表示使用者勾選核取方塊。9-6 下拉式清單方塊 9-6-1 下拉式清單方塊欄位 9-6-2 取得下拉式清單方塊欄位的內容 9-6-3 取得清單方塊欄位的內容9-6-1 下拉式清單方塊欄位-種類 下拉式清單方塊:當size屬

13、性值為1時只顯示一個選項,需要按右邊鈕才能顯示其他選項: 清單方塊:和下拉式清單方塊一樣,只不過顯示的選項不只一個,size屬性為顯示的選項數,如果選項太多超過清單方塊尺寸,視窗就會出現捲動軸幫助檢視選項:9-6-1 下拉式清單方塊欄位-語法 HTML的標籤需要配合標籤的選項,才能建立下拉式清單方塊欄位: 選項名稱 選項名稱 .9-6-1 下拉式清單方塊欄位-屬性 標籤的屬性說明: 標籤的屬性說明,如下表所示:屬性屬性說明說明name欄位名稱multiple設定是否為複選,如為複選一定是清單方塊size顯示選項數目,1 為下拉式清單方塊,大於 1 為清單方塊屬性屬性說明說明value選項值se

14、lected此屬性沒有屬性值,加上此屬性表示是預選選項9-6-2 取得下拉式清單方塊欄位的內容 下拉式清單方塊欄位會將選項標籤屬性value的值傳送到伺服器,在PHP程式是使用$_POST結合陣列取得欄位內容:$gender = $_POSTGender; 上 述程式碼取得下拉式清單方塊Gender的值,此值就是使用者選擇選項的value屬性值。9-6-3 取得清單方塊欄位的內容-標籤 清單方塊如果是單選,PHP處理程式取得選擇的方式和下拉式清單方塊相同,如果是複選的清單方塊欄位,HTML表單標籤的欄位名稱是一個陣列: 上述標籤的name屬性為Webs,表示PHP取得的欄位值是一個陣列,接著我

15、們可以使用if或switch條件敘述來判斷使用者的選擇。9-6-3 取得清單方塊欄位的內容-取得欄位內容 在PHP程式一樣是使用$_POST取得欄位內容,只不過取得的欄位內容是一個陣列:$webs = $_POSTWebs; 上述程式碼取得清單方塊欄位Webs的陣列值,可以使用foreach迴圈配合switch條件進一步判斷使用者複選的選項。9-7 選擇鈕 9-7-1 選擇鈕欄位 9-7-2 取得選擇鈕欄位的內容9-7-1 選擇鈕欄位-語法 選擇鈕能夠在表單設計一組選項,每一個選項名稱旁有一個圓形的選項鈕,屬於多選一的單選題:9-7-1 選擇鈕欄位-屬性 語法的屬性說明,如下表所示:屬性屬性說

16、明說明type屬性值 radio 為選擇鈕name欄位名稱checked此屬性沒有參數值,加上屬性名稱表示預設選取此選擇鈕value選取後表單送出的值,在送出表單時,如果是沒有選取的選擇鈕,這個值就會被忽略掉9-7-2 取得選擇鈕欄位的內容 選擇鈕欄位是一個單選題,其處理方式和單選的下拉式清單方塊相同,也是將標籤屬性value值傳送到伺服器,使用$_POST結合陣列取得選擇鈕欄位的內容:$gender = $_POSTGender; 上述程式碼取得選擇鈕Gender的值,此值是選取選項的value屬性值,換句話說,依屬性值就可進一步使用if或switch條件敘述判斷使用者的選擇。9-8 隱藏欄

17、位 9-8-1 隱藏欄位 9-8-2 取得隱藏欄位的內容9-8-1 隱藏欄位 隱藏欄位並不需使用者輸入資料,而是直接將value屬性值傳送到伺服端,通常是用來傳送表單的環境參數,或是在不同網頁表單間傳遞資料: 上述語法的屬性說明:屬性屬性說明說明type屬性值 hidden 為隱藏欄位name欄位名稱value欄位送出的值9-8-2 取得隱藏欄位的內容 隱藏欄位和文字或密碼方塊一樣,在伺服端只需使用$_POST結合陣列就可以取得隱藏欄位的內容:$order = $_POSTOrder; 上述程式碼取得名為Order的隱藏欄位值,傳送的是欄位屬性value的值。9-9 表單欄位驗證 9-9-1

18、PHP程式如何驗證表單 9-9-2 表單欄位驗證9-9-1 PHP程式如何驗證表單-說明 在PHP程式取得表單欄位資料並不困難,事實上,我們反而需要多考量使用者輸入的資料是否符合需求,在處理取得的資料前進行欄位資料的驗證,檢查使用者輸入的資料是否符合所需的格式。 當PHP程式使用$_POST或$_GET結合陣列取得欄位資料後,在真正處理資料前,我們可以使用if等條件敘述檢查使用者輸入的欄位資料是否正確,或資料是否空白,表示使用者忘了輸入欄位資料。9-9-1 PHP程式如何驗證表單-流程圖 如果使用者輸入的資料有錯誤,PHP程式並不進行資料處理,而是顯示錯誤訊息,然後回到表單網頁要求使用者重新輸

19、入,表單欄位驗證的流程圖:9-9-1 PHP程式如何驗證表單-實作 在實作表單欄位驗證時,我們可以使用兩個PHP程式:一是表單網頁顯示錯誤訊息,一是PHP處理程式,當錯誤產生時,就使用header()轉址回網頁表單(header()的說明請參閱第10章)。 另一種方式是將表單和PHP處理程式寫在同一個PHP程式,使用if條件判斷是否是表單送回,如果是,再進行表單欄位驗證和處理。在下一節筆者準備使用此方式建立表單欄位驗證。9-9-2 表單欄位驗證-判斷是否是表單送回 PHP程式進行欄位驗證時,因為表單和處理程式寫在同一個程式檔案,所以PHP程式需要判斷顯示表單內容,或是輸入資料後的表單送回,可以

20、執行表單欄位驗證:if ( isset($_GETReg) ) / 表單處理 上述if條件可以判斷使用者是否按下表單按鈕,因為表單使用get方法,所以在PHP程式是使用$_GET結合陣列。9-9-2 表單欄位驗證-欄位驗證 如果按下按鈕,就表示使用者已經輸入資料,將表單送回進行處理,所以我們可以開始執行欄位資料的檢查,接著進行表單處理。 如果欄位有錯誤,就不進行表單處理,直接顯示網頁表單,以便重新讓使用者輸入正確的欄位資料。9-9-2 表單欄位驗證-保留資訊 因為HTTP通訊協定並不能保留狀態,當錯誤發生回到表單後,就算是一些輸入正確的欄位也一樣需要重新輸入,為了保留使用者已經輸入正確的欄位資料,表單欄位在欄位的value屬性有設定預設值:input type=text name=Name size =10“ value=9-2 PHP的表單處理與URL參數 9-2-1 網頁表單的用途 9-2-2 HTML標籤建立網頁表單 9-2-3 $_POST與$_GET結合陣列變數 9-2-4 URL參數傳遞資料9-2-3 $_POST與$_GET結合陣列變數-使用 PHP程式碼到底是使用$_POST或$_GET變數,需視HTML表單標籤的method屬性值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论