在 PHP 中,$_POST
和 $_GET
是两种不同的超全局变量,用于收集表单数据:
$_POST
:用于收集通过 HTTP POST 方法提交的表单数据$_GET
:用于收集通过 URL 参数传递的数据以下是一个完整的示例,展示如何在同一页面中使用 $_GET
值作为 $_POST
表单的一部分,并在提交后显示结果:
<?php
// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = isset($_POST['name']) ? htmlspecialchars($_POST['name']) : '';
$getValue = isset($_GET['param']) ? htmlspecialchars($_GET['param']) : '';
echo "<h2>提交结果:</h2>";
echo "<p>POST 值 (name): " . $name . "</p>";
echo "<p>GET 值 (param): " . $getValue . "</p>";
}
// 获取 GET 参数(如果有)
$initialGetValue = isset($_GET['param']) ? htmlspecialchars($_GET['param']) : '';
?>
<!DOCTYPE html>
<html>
<head>
<title>POST 和 GET 示例</title>
</head>
<body>
<h1>表单示例</h1>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
<label for="name">输入名称:</label>
<input type="text" id="name" name="name" value="<?php echo $initialGetValue; ?>">
<input type="submit" value="提交">
</form>
</body>
</html>
htmlspecialchars
防止 XSS 攻击)action
属性设置为当前页面($_SERVER['PHP_SELF']
)param
,会将其值预填充到文本框中htmlspecialchars()
防止 XSS 攻击这种技术可用于:
问题1:GET 参数丢失
action
属性中显式包含 GET 参数<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'] . '?param=' . urlencode($initialGetValue)); ?>">
问题2:表单重复提交
没有搜到相关的文章