PHP - 表单处理


HTML 表单在 PHP Web 应用程序中起着重要作用。尽管纯粹使用 HTML 组成的网页是静态网页,但 HTML 表单组件是一项重要功能,有助于实现交互性和呈现动态内容。

PHP 的表单处理功能可以在处理之前验证从用户那里收集的数据。

HTML 表单是各种表单控件的集合,例如文本字段、复选框、单选按钮等,用户可以与这些数据交互、输入或选择某些数据,这些数据可以由 JavaScript 在本地处理(客户端处理),也可以发送到远程服务器在服务器端编程脚本(如 PHP)的帮助下进行处理。

一个或多个表单控件元素放置在 <form> ~ </form> 标签中。表单元素的特点是不同的属性,例如 nameaction method


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

表单属性

在 HTML 表单元素的许多属性中,通常需要并定义以下属性 -

Action 属性

一个字符串,表示处理表单提交的 URL。例如,http://example.com/test.php。要将 for-data 提交到定义 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 (默认) − GET;表单数据附加到带有 “” 分隔符的操作 URL 中。当表单没有副作用时,请使用此方法。
  • dialog − 当表单位于 <dialog> 中时,关闭对话框并导致在提交时触发提交事件,而不提交数据或清除表单。

Name 属性

表单的名称。该值不能为空字符串,如果同一 HTML 文档中有多个表单,则该值必须是唯一的。

Target 属性

一个字符串,指示在提交表单后显示响应的位置。应为以下值之一 -

  • _self (默认) − 加载到与当前浏览上下文相同的浏览上下文中。
  • _blank − 加载到新的未命名浏览上下文中。
  • _parent − 加载到当前浏览上下文的父浏览上下文中。
  • _top − 加载到顶级浏览上下文(当前上下文的祖先,没有父项)。

因此,PHP Web 应用程序中使用的典型 HTML 表单如下所示 -


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

表单元素

HTML 表单设计有不同类型的控件或元素。用户可以与这些控件交互以输入数据或从显示的可用选项中进行选择。下面描述了一些元素 -

输入元件

input 元素表示一个数据字段,它使用户能够输入和/或编辑数据。

INPUT 元素的 type 属性控制数据。INPUT 元素可以是以下类型 -

发短信

用于输入单行文本的文本字段。


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

密码

掩盖输入字符的单行文本归档。


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

复选框

一个矩形可复选框,它是预定义列表中的零个或多个值的集合。


<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>

单选按钮

此类型呈现具有两种状态(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>

文件

input 类型呈现一个带有按钮标题的文件,并允许用户从客户端文件系统中选择一个文件,通常用于上传到服务器上。表单的 enctype 属性必须设置为 “multipart/form-data


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

电子邮件

单行文本字段,自定义为接受符合有效电子邮件 ID 的字符串。

网址

自定义的单行文本归档,以接受符合有效 URL 的字符串。

提交

input 元素呈现一个按钮,单击该按钮时,将启动将表单数据提交到当前表单的 action 属性中指定的 URL。


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

选择元素

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>名字:</td>
            <td><input type = "text" name = "name"></td>
         </tr>
         <tr>
            <td>E-mail: </td>
            <td><input type = "email" name = "email"></td>
         </tr>
         <tr>
            <td>网址:</td>
            <td><input type = "url" name = "website"></td>
         </tr>
         <tr>
            <td>班级:</td>
            <td><textarea name = "comment" rows = "5" cols = "40"></textarea></td>
         </tr>
         <tr>
            <td>性别:</td>
            <td>
               <input type = "radio" name = "gender" value = "女性">女性
               <input type = "radio" name = "gender" value = "男性">男性
            </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>你的给定值是:</h2>";
      echo $name;
      echo "<br>";

      echo $email;
      echo "<br>";

      echo $site;
      echo "<br>";

      echo $comment;
      echo "<br>";

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

将产生以下输出 -

PHP 表单处理