Form

  • Uploaded by: platin2808
  • 0
  • 0
  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Form as PDF for free.

More details

  • Words: 1,071
  • Pages: 50
PHP 的狀態管理與表單處理         

PHP 狀態管理的基礎 PHP 的表單處理 文字與密碼方塊 文字區域 核取方塊 下拉式清單方塊 選擇鈕 隱藏欄位 表單欄位驗證

PHP 狀態管理的基礎 HTTP 通訊協定的特性  狀態管理的種類 

PHP 狀態管理的基礎 



當 PHP 程式在伺服端執行時,因為 HTTP 通訊協 定並不會保留客戶端的使用者狀態,所以瀏覽不 同的 PHP 程式時, PHP 程式需要將使用者狀態 傳遞給下一頁瀏覽的 PHP 程式,稱為「狀態管理 」( State Management )。 簡單的說,狀態管理是在保留客戶端使用者狀態 ,以便 PHP 網站可以取得使用者狀態來正確的執 行 PHP 程式。

HTTP 通訊協定的特性 





HTTP 通訊協 定不會 持續 保持連 線: 只有當瀏覽程式提 出請求時才會建立連線,在請求後就斷線等待回應,每一 次請求和回應都需事先建立連線。 HTTP 通訊協 定並不 會保 留狀態 : 因為 HTTP 通訊協定 並不會保持連線,所以在連線時,伺服端和客戶端互相知 道對方,一旦請求結束,就互不相干,使用者狀態並不會 保留。 HTTP 通訊協 定與資 料類 型無關 : 任何種類的資料都可 以透過 HTTP 通訊協定傳送到客戶端,這就是 ContentType 標頭資訊指定的 MIME 資料類型。

狀態管理的種類 - 說明 

狀態管理( State Management )是在 PHP 程式間傳遞資料,以便不同 PHP 程 式能夠保留使用者狀態。狀態管理以狀態 資訊儲存的位置,可以區分成兩大類: • 儲存在客戶端 • 儲存在伺服端

狀態管理的種類 - 客戶端的狀態管理 

客戶端的狀態管理是將資料儲存在使用者 電腦,或是儲存在 HTML 網頁或 PHP 程 式建立的 HTML 標籤中,以便將資料傳遞 給下一個 PHP 程式,常用的方法如下表所 示: 使用方法 說明 表單欄位 URL 參數 Cookies

使用 HTML 表單欄位內容傳遞資料到其他 PHP 程式 使用 URL 網址的參數來傳遞資料 Cookies 是保留在使用者電腦的小檔案,檔案內容是一 些執行時所需的使用者資訊

狀態管理的種類 - 伺服端的狀態管理 

伺服端的狀態管理是將資料儲存在伺服端 的電腦,換句話說,狀態管理的使用者狀 態資訊會佔用伺服器的資源,常用的方法 如下表所示: 使用方法 Session 變數 文字檔案 資料庫 XML 文件

說明 使用 Session 變數儲存使用者資料 使用伺服端的文字檔案來儲存使用者資料 使用資料庫的記錄儲存使用者資料 使用 XML 文件儲存使用者資料

PHP 的表單處理與 URL 參數 網頁表單的用途  HTML 標籤建立網頁表單  $_POST 與 $_GET 結合陣列變數  URL 參數傳遞資料 

網頁表單的用途 

PHP 程式是在伺服端執行,換句話說,客 戶端網頁只負責取得使用者輸入的資料, 然後將輸入資料送到伺服端進行處理,使 用的是 HTML 網頁表單,如下圖所示:

HTML 標籤建立網頁表單 - 標籤 

在 HTML 標籤關於網頁表單的標籤只有五 個,如下表所示: 表單標籤


說明 HTML 表單標籤 輸入或選擇資料的表單欄位,包含按鈕和文字方 塊欄位,不同 type 屬性表示不同的欄位 <select> …. 建立選單欄位,內含 選單欄位的選項 文字區域欄位

HTML 標籤建立網頁表單 - 架構
<select>


HTML 標籤建立網頁表單 -
標籤的屬 性  name 屬性:表單名稱。  method 屬性:設定資料送出方式,如下: 
 action 屬性:設定 PHP 表單處理程式所在的路徑,也可 以是 URL 網址,如下所示: 
 enctype 屬性:設定表單資料傳送時的編碼方式。

$_POST 與 $_GET 結合陣列變數 - 說明 



PHP 的表單處理是使用 PHP 的「預定變數」 ( Predefined Variables )取得欄位資料,預 定變數不同於使用者宣告的變數,屬於 PHP 引擎 建立的變數。 PHP 關於表單處理的預定變數是一種預設擁有全 域變數範圍的結合陣列變數,一共有 2 個,其說 明如下表所示:

預定變數 $_POST $_GET

說明 結合陣列變數,儲存透過 HTTP POST 方法傳入 PHP 程式檔 案的表單欄位資料,鍵值是欄位名稱 結合陣列變數,儲存透過 HTTP GET 方法傳入 PHP 程式檔 案的表單欄位資料,鍵值是欄位名稱

$_POST 與 $_GET 結合陣列變數 - 範例 

例如:網頁表單擁有名為 Username 的欄 位,在 PHP 程式碼可以使用上表的預定變 數取得欄位值,如下所示: $name = $_POST["Username"]; $name = $_GET["Username"];



上述程式碼可以取得結合陣列的元素值, 即欄位輸入的內容。

$_POST 與 $_GET 結合陣列變數 - 使用 

PHP 程式碼到底是使用 $_POST 或 $_GET 變數,需視 HTML 表單
標籤的 method 屬性值而定,如下表所示 : 屬性值 method PHP 程式使用的結合陣列變數 POST 或 post GET 或 get

$_POST $_GET

URL 參數傳遞資料 - 標籤 

PHP 除了可以使用本章後的表單來傳遞資 料外,還可以使用超連結 URL 參數或是 header() 函數(詳見第 10 章的說明)轉 址傳送資料給其他 PHP 程式,如下所示:
登入網站



標籤的超連結傳遞 Username 和 Password 一共兩個參數。

URL 參數傳遞資料 - 取得參數值 PHP 程式取得超連結傳遞參數如同表單的 get 方法,可以使用 $_GET 陣列變數取得 參數或欄位值,如下所示: $username = $_GET["Username"]; $pass = $_GET["Password"]; 

文字與密碼方塊 文字與密碼方塊欄位  取得文字與密碼方塊欄位的內容 

文字與密碼方塊欄位 - 語法 

文字和密碼方塊都可以輸入一段文字內容 ,唯一的差別在於密碼欄位輸入的資料並 不會顯示出來,而是使用小圓點或「 * 」 星號代替,其基本語法如下所示:

文字與密碼方塊欄位 - 屬性 

語法的屬性說明,如下表所示:

屬性 type name maxlength readonly size value

說明 屬性值 text 為文字方塊,password 為密碼方塊 欄位名稱 使用者允許輸入的最大字元個數,預設值 0 表示不限長度 欄位是否為唯讀,預設為 False 表示允許輸入,如為 True 表 示唯讀,不能輸入資料 設定欄位顯示的寬度有多少個字元 設定欄位的預設值

取得文字與密碼方塊欄位的內容 

在建立好文字與密碼方塊的 HTML 表單後 ,我們就可以撰寫 PHP 程式取得欄位內容。 文字與密碼欄位是直接將輸入資料傳到伺 服器, PHP 程式只需使用 $_POST 結合陣 列變數就可以取得欄位內容,如下所示: $username $password



= =

$_POST["Username"]; $_POST["Password"];

上述程式碼的陣列鍵值是表單欄位的名稱 屬性 name ,分別為: User 文字方塊和 Pass 密碼方塊的內容。

文字區域 文字區域欄位  取得文字區域欄位的內容 

文字區域欄位 - 語法 

當需要輸入整個段落或整篇文字時,我們 就可以在表單使用文字區域欄位,其基本 語法如下所示:

文字區域欄位 - 屬性 

語法的屬性說明,如下表所示: 屬性 name rows cols wrap

value

說明 欄位名稱 欄位可以輸入幾列 欄位的每列有幾個字 設定顯示和送出時的換行方式,off 為不換行,virtual 為 自動換行,但輸出時仍然為一列,physical 也是自動換 行,不過輸出時同時也會換行 欄位的預設值

取得文字區域欄位的內容 

在建立文字區域欄位的 HTML 表單後,就 可以撰寫 PHP 程式取得欄位內容,如下所 示: $msg = $_POST["Message"]; echo " 意見 :
".nl2br($msg)."
";



上述程式碼取得名為 Message 文字區域的 內容,因為 HTML 標籤顯示欄位內容時, 並不會顯示換行,所以呼叫 nl2br() 函數 將換行符號 \n 替換成
換行標籤。

核取方塊 核取方塊欄位  取得核取方塊欄位的內容 

核取方塊欄位 - 語法 

表單欄位的核取方塊如同一個開關,可以 勾選或取消勾選來設定是否使用此功能, 其基本語法如下所示:

核取方塊欄位 - 屬性 

語法的屬性說明,如下表所示:

屬性 type name checked value

說明 屬性值 checkbox 為核取方塊 欄位名稱 此屬性沒有參數值,加上屬性名稱表示預設勾選 勾選後表單送出的值,在送出表單時,如果是沒有勾選的核取 方塊,這個值會被忽略掉

取得核取方塊欄位的內容 核取方塊在表單扮演的角色是一個開關, PHP 程式取得核取方塊欄位內容是使用 isset() 檢查欄位是否勾選,傳回值是欄位 的 value 屬性值,如下所示: if (isset($_POST["ie"])) echo " 使用 Internet Explorer
";  上述 if 條件檢查 ie 核取方塊是否被勾選, 如果 isset() 傳回 true ,就表示使用者勾 選核取方塊,每一個核取方塊都可以使用 相同方式進行檢查。 

下拉式清單方塊 下拉式清單方塊欄位  取得下拉式清單方塊欄位的內容  取得清單方塊欄位的內容 

下拉式清單方塊欄位 - 種類 



下拉式清單方塊 : 當 size 屬性值為 1 時 只顯示一個選項,需要按右邊▼鈕才能顯 示其他選項,如下圖所示: 清單方塊: 和下拉式清單方塊一樣,只不 過顯示的選項不只一個, size 屬性為顯示 的選項數,如果選項太多超過清單方塊尺 寸,視窗就會出現捲動軸幫助檢視選項, 如下圖所示:

下拉式清單方塊欄位 - 語法 

HTML 的 <select> 標籤需要配合

…..

下拉式清單方塊欄位 - 屬性 

<select> 標籤的屬性說明,如下表所示:

屬性 name multiple size 

說明 欄位名稱 設定是否為複選,如為複選一定是清單方塊 顯示選項數目,1 為下拉式清單方塊,大於 1 為清單方塊


Related Documents

Form
June 2020 41
Form
November 2019 63
Form
October 2019 64
Form
June 2020 33
Form
November 2019 66
Form
May 2020 48

More Documents from ""

Form
November 2019 66