处理表单

PHP 最强大的功能之一是它处理 HTML 表单的方式。要理解的重要基本概念是,任何表单元素都会自动对您的 PHP 脚本可用。请阅读手册中关于 外部来源的变量 的部分,以获取有关使用 PHP 表单的更多信息和示例。以下是一个 HTML 表单示例

示例 #1 一个简单的 HTML 表单

<form action="action.php" method="post">
    <label for="name">Your name:</label>
    <input name="name" id="name" type="text">

    <label for="age">Your age:</label>
    <input name="age" id="age" type="number">

    <button type="submit">Submit</button>
</form>

此表单没有特殊之处。它是一个简单的 HTML 表单,没有任何特殊标签。当用户填写此表单并点击提交按钮时,会调用 action.php 页面。在这个文件中,您会写下类似这样的内容

示例 #2 打印来自我们表单的数据

您好 <?php echo htmlspecialchars($_POST['name']); ?>
<?php echo (int)$_POST['age']; ?> 岁了。

此脚本的示例输出可能是

Hi Joe. You are 22 years old.

除了 htmlspecialchars()(int) 部分外,应该很明显它做了什么。 htmlspecialchars() 确保任何在 html 中是特殊的字符都得到正确编码,这样人们就不能将 HTML 标签或 Javascript 注入您的页面。对于年龄字段,由于我们知道它是一个数字,我们可以直接 转换为 一个 int,这将自动清除任何无关的字符。您还可以使用 filter 扩展让 PHP 自动为您执行此操作。 $_POST['name']$_POST['age'] 变量由 PHP 自动为您设置。之前我们使用了 $_SERVER 超级全局变量;在上面,我们只是介绍了 $_POST 超级全局变量,它包含所有 POST 数据。请注意我们的表单的 method 是 POST。如果我们使用 GET 方法,那么我们的表单信息将存在于 $_GET 超级全局变量中。如果您不关心请求数据的来源,也可以使用 $_REQUEST 超级全局变量。它包含 GET、POST 和 COOKIE 数据的合并信息。

添加注释

用户贡献的注释 1 个注释

114
sethg at ropine dot com
20 年前
根据 HTTP 规范,当您使用表单更改服务器端上的某些内容的状态时,应该使用 POST 方法。例如,如果一个页面有一个表单允许用户添加他们自己的评论,就像这个页面一样,表单应该使用 POST。如果您在一个通过 POST 访问的页面上点击“重新加载”或“刷新”,这几乎总是错误的 - 您不应该发布相同的评论两次 - 这就是为什么这些页面没有被添加书签或缓存的原因。

当您的表单从服务器获取东西,而实际上并没有改变任何东西时,应该使用 GET 方法。例如,搜索引擎的表单应该使用 GET,因为搜索网站不应该更改客户端可能关心的任何东西,而且为搜索引擎查询的结果添加书签或缓存与为静态 HTML 页面添加书签或缓存一样有用。
To Top