Php 简明教程
PHP - Form Handling
HTML Forms 在 PHP Web 应用程序中扮演着重要的角色。虽然纯粹由 HTML 编写的网页是一个静态网页,但 HTML 表单组件是一个重要的特性,有助于实现交互性和呈现动态内容。PHP 的表单处理功能可以在处理之前验证从用户收集的数据。
HTML 表单是各种表单控件的集合,例如文本字段、复选框、单选按钮等,用户可以使用这些表单控件进行交互、输入或选择某些数据,这些数据可以由 JavaScript(客户端处理)在本地处理,也可以借助 PHP 等服务器端编程脚本发送到远程服务器进行处理。
一个或多个表单控件元素被放在 <form> 和 </form> 标记内。 form element 的特点是具有不同的属性,例如名称、操作和方法。
<form [attributes]>
Form controls
</form>
Form Attributes
在 HTML 表单元素的众多属性中,经常需要和定义以下属性 −
Action Attribute
表示处理表单提交的 URL 的字符串。例如, http://example.com/test.php 。若要将表单数据提交至定义 HTML 表单的相同 PHP 脚本,请使用 PHP_SELF 服务器变量 −
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
Enctype Attribute
指定在将表单数据发送到服务器之前对其进行编码的方法。可能的值为 −
-
application/x-www-form-urlencoded − 默认值。
-
multipart/form-data − 如果表单包含带有类型=文件的 <input> 元素,请使用此方法。
-
text/plain − 对于调试目的很有用。
Method Attribute
表示提交表单所用 HTTP 方法的字符串。以下方法是 method 属性的可能值 −
-
post − POST 方法;表单数据作为请求正文发送。
-
get (default) − GET;表单数据附加到带有“?”分隔符的操作 URL。在表单没有副作用时使用此方法。
-
dialog − 当表单位于
<dialog>
内部时,关闭该会话框并触发提交事件,而无需提交数据或清除表单。
Target Attribute
一个指示提交表单后显示响应的位置的字符串。应为下列选项之一:
-
_self (default) − 加载到与当前浏览上下文相同的上下文。
-
_blank − 加载到一个新的未命名浏览上下文中。
-
_parent − 加载到当前浏览上下文的父上下文中。
-
_top − 加载到顶级浏览上下文中(当前上下文的祖先且没有父上下文)。
因此,在一个 PHP Web 应用程序中使用的典型 HTML 表单如下所示:
<form name="form1" action="<?php echo $_SERVER['PHP_SELF'];?>" action="POST">
Form controls
</form>
Form Elements
HTML 表单设计为不同类型的控件或元素。用户可以与这些控件交互,以输入数据或从呈现的可用选项中进行选择。下面描述了一些元素:
Input Element
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>
此类型呈现一个带有两种状态(开或关)的可圆形单击按钮,通常是单选按钮组中的一个按钮。
<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">
Form Example
让我们使用这些表单元素来设计一个 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>
它将生成以下 output −