PHP 7.4 中处理 POST 后重定向应严格遵循 PRG 模式:先在输出前用 $_POST 获取并安全处理数据,再用 header('Location: success.php', true, 303) 跳转,最后在目标页通过 session 显示并清除提示信息。

PHP 7.4 中处理 POST 请求后重定向,核心是遵循 POST/Redirect/GET(PRG)模式,防止刷新重复提交、提升用户体验,并确保状态反馈可靠显示。关键不在“如何发 POST”,而在于“POST 处理完怎么跳”。下面分三块讲清楚。
1. 正确接收并处理 POST 数据
必须在任何 HTML 输出前完成:验证、入库、清理等逻辑。不要把 PHP 处理代码嵌在 HTML 里,尤其不能放在 后面或 中间。
- 用
$_POST获取字段,例如$email = $_POST['email'] ?? '',配合filter_var()或htmlspecialchars()做基础过滤 - 数据库操作建议用 PDO 预处理语句,避免 SQL 注入
- 处理成功后,**不直接 echo 成功信息**,而是准备跳转——这是 PRG 的起点
2. 用 header() 完成重定向(最推荐)
这是 PHP 7.4 最标准、最高效的方式,但有硬性前提:脚本不能有任何输出(包括空格、BOM、 标签)出现在 header() 之前。
- 基本写法:
header('Location: success.php');,之后必须跟exit;或die(); - 带状态码更规范:成功跳转用
header('Location: success.php', true, 303);(303 See Other 是 PRG 推荐状态码,明确表示“请用 GET 访问新地址”) - 若需传递提示信息,用 session:
$_SESSION['msg'] = '提交成功'; header('Location: success.php'); exit;
3. 在目标页(如 success.php)显示结果
重定向后的页面是纯 GET 请求,安全可刷新。这里读取并显示上一步存的 session 消息,然后立即清除,避免二次显示:
- 开头启用会话:
session_start(); - 读取并清空:
$msg = $_SESSION['msg'] ?? ''; unset($_SESSION['msg']); - 再输出 HTML:
= htmlspecialchars($msg) ?>
- 这样既避免重复提交,又保证消息只显示一次
不复杂但容易忽略:重定向不是加个链接就行,而是服务端主动控制流程的转折点。只要 POST 处理逻辑前置、header() 调用干净、跳转后页面负责展示,整个链路就稳了。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











