PHP Conference Japan 2024

处理表单

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 数据。请注意我们的表单的方法是 POST。如果我们使用GET方法,则我们的表单信息将位于$_GET超级全局变量中。如果您不关心请求数据的来源,也可以使用$_REQUEST超级全局变量。它包含 GET、POST 和 COOKIE 数据的合并信息。

添加注释

用户贡献的注释 1 条注释

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

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