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>