PHP - 表單處理



HTML 表單在PHP Web應用程式中扮演著重要的角色。雖然純HTML組成的網頁是靜態網頁,但HTML表單元件是一個重要的特性,有助於帶來互動性和渲染動態內容。PHP的表單處理功能可以在處理之前驗證從使用者收集的資料。

HTML表單是各種表單控制元件(例如文字欄位、複選框、單選按鈕等)的集合,使用者可以與這些控制元件互動,輸入或選擇某些資料,這些資料可以透過JavaScript(客戶端處理)在本地處理,也可以透過伺服器端程式設計指令碼(例如PHP)傳送到遠端伺服器進行處理。

一個或多個表單控制元件元素放在<form>和</form>標籤內。表單元素的特徵在於不同的屬性,例如name、action和method。

<form [attributes]>
   Form controls
</form>

表單屬性

在HTML表單元素的眾多屬性中,以下屬性通常是必需且已定義的:

Action 屬性

一個字串,表示處理表單提交的URL。例如,http://example.com/test.php。要將表單資料提交到定義HTML表單的同一PHP指令碼中,請使用PHP_SELF伺服器變數:

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">

Enctype 屬性

指定在將表單資料傳送到伺服器之前應如何對其進行編碼的方法。可能的值包括:

  • application/x-www-form-urlencoded - 預設值。

  • multipart/form-data - 如果表單包含type=file的<input>元素,則使用此屬性。

  • text/plain - 用於除錯目的。

Method 屬性

一個字串,表示提交表單的HTTP方法。以下方法是method屬性的可能值:

  • post - POST方法;表單資料作為請求正文傳送。

  • get (default) - GET方法;表單資料使用“?”分隔符附加到action URL。如果表單沒有副作用,請使用此方法。

  • dialog - 當表單位於<dialog>內時,關閉對話方塊並觸發提交事件,而無需提交資料或清除表單。

Name 屬性

表單的名稱。該值不能是空字串,如果同一HTML文件中有多個表單,則該值必須唯一。

Target 屬性

一個字串,指示在提交表單後在哪裡顯示響應。應該是以下值之一:

  • _self (default) - 載入到與當前瀏覽上下文相同的瀏覽上下文。

  • _blank - 載入到新的未命名瀏覽上下文。

  • _parent - 載入到當前瀏覽上下文的父級瀏覽上下文。

  • _top - 載入到頂級瀏覽上下文(當前瀏覽上下文的祖先,並且沒有父級)。

因此,在PHP Web應用程式中使用的典型HTML表單如下所示:

<form name="form1" action="<?php echo $_SERVER['PHP_SELF'];?>" action="POST">
   Form controls
</form>

表單元素

HTML表單使用不同型別的控制元件或元素設計。使用者可以與這些控制元件互動以輸入資料或從提供的選項中進行選擇。下面描述一些元素:

Input 元素

input元素表示資料欄位,使使用者能夠輸入和/或編輯資料。

INPUT元素的type屬性控制資料。INPUT元素可以具有以下型別:

Text

用於輸入單行文字的文字欄位。

<input type="text" name="employee">

Password

單行文字欄位,用於遮蔽輸入的字元。

<input type="password" name="pwd"><br>

Checkbox

一個矩形的可選中框,它是一組從預定義列表中選擇零個或多個值。

<input type="checkbox" id="s1" name="sport1" value="Cricket">
<label for="s1">I like Cricket</label><br>
<input type="checkbox" id="s2" name="sport2" value="Football">
<label for="s2">I like Football</label><br>
<input type="checkbox" id="s3" name="sport3" value="Tennis">
<label for="s3">I like Tennis</label><br><br>

Radio

此型別呈現一個圓形的可點選按鈕,具有兩種狀態(ON或OFF),通常是單選組中多個按鈕的一部分。

<input type="radio" id="g1" name="gender" value="Male">
<label for="g1">Male</label><br>
<input type="radio" id="g2" name="female" value="Female">
<label for="g2">Female</label><br>

File

此輸入型別呈現一個標題為“檔案”的按鈕,允許使用者從客戶端檔案系統選擇檔案,通常用於上傳到伺服器。表單的enctype屬性必須設定為“multipart/form-data”。

<input type="file" name="file">

Email

單行文字欄位,自定義為接受符合有效電子郵件ID的字串。

URL

單行文字欄位,自定義為接受符合有效URL的字串。

Submit

此input元素呈現一個按鈕,單擊該按鈕會啟動將表單資料提交到當前表單action屬性中指定的URL。

<input type="submit" name="Submit">

Select 元素

select元素表示一個控制元件,用於在一組選項中進行選擇。每個選項都使用Select控制元件的option屬性定義。例如:

<select name="Subjects" id="subject">
   <option value="Physics">Physics</option>
   <option value="Chemistry">Chemistry</option>
   <option value="Maths">Maths</option>
   <option value="English">English</option>
</select>

表單示例

讓我們使用這些表單元素來設計一個HTML表單並將其傳送到PHP_SELF指令碼

<html>
<body>
   <form method = "post" action = "<?php 
      echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
      <table>
         <tr>
            <td>Name:</td>
            <td><input type = "text" name = "name"></td>
         </tr>
         <tr>
            <td>E-mail: </td>
            <td><input type = "email" name = "email"></td>
         </tr>
         <tr>
            <td>Website:</td>
            <td><input type = "url" name = "website"></td>
         </tr>
         <tr>
            <td>Classes:</td>
            <td><textarea name = "comment" rows = "5" cols = "40"></textarea></td>
         </tr>
         <tr>
            <td>Gender:</td>
            <td>
               <input type = "radio" name = "gender" value = "female">Female
               <input type = "radio" name = "gender" value = "male">Male
            </td>
         </tr>
         <td>
            <input type = "submit" name = "submit" value = "Submit"> 
         </td>
      </table>
   </form>
   <?php
      $name = $email = $gender = $comment = $site = "";

      if ($_SERVER["REQUEST_METHOD"] == "POST") {
         $name = $_POST["name"];
         $email = $_POST["email"];
         $name = $_POST["name"];
         $comment = $_POST["comment"];
         $gender = $_POST["gender"];
         $site = $_POST["website"];
      }
      echo "<h2>Your given values are as:</h2>";
      echo $name;
      echo "<br>";

      echo $email;
      echo "<br>";

      echo $site;
      echo "<br>";

      echo $comment;
      echo "<br>";

      echo $gender;
   ?>
</body>
</html>

它將產生以下輸出

PHP Form Handling
廣告