PHP 简明教程

PHP $_POST

1. PHP $_POST

$_POST 超全局变量包含了一个通过 HTTP POST 方法接收到的变量数组。

PHP 超全局变量是内置变量,它们始终可以在所有的作用域中被直接访问

2. 在 HTML 表单中使用 $_POST

如果 HTML 表单的 method 属性被设置为 "post",那么该表单就会通过 HTTP POST 方法提交数据。

为了演示这一点,我们首先创建一个简单的 HTML 表单:

HTML 文件:

<html>
<body>

<form method="post" action="demo_request.php">
  Name: <input type="text" name="fname">
  <input type="submit">
</form>

</body>
</html>

当用户点击提交按钮时,表单数据将被发送到 <form> 标签的 action 属性中指定的 PHP 文件。

在目标 PHP 文件中,我们可以使用 $_POST 变量来收集输入字段(input field)的值。

PHP 文件 (demo_request.php):

$name = htmlspecialchars($_POST['fname']);
echo $name;

安全提示: 在使用从 $_POST 等超全局变量收集来的任何数据之前,务必对其进行验证和转义(清理),以防止出现类似 XSS (跨站脚本) 攻击的安全漏洞。上面代码中使用的 htmlspecialchars() 函数就是实现这一目的的方法之一。要进行更稳健的过滤,您可以使用 PHP 的 filter(过滤器)函数。

3. 整合代码:在同一文件处理 POST 提交

在下面的示例中,我们将 HTML 表单的显示和 PHP 的表单处理代码放在了同一个 PHP 文件中:

示例

<html>
<body>

<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
  Name: <input type="text" name="fname">
  <input type="submit">
</form>

<?php
// 检查请求方法是否为 POST
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  // 收集输入字段的值并进行安全过滤
  $name = htmlspecialchars($_POST['fname']);
  
  if (empty($name)) {
    echo "Name is empty";
  } else {
    echo $name;
  }
}
?>

</body>
</html>