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