本文介绍一种健壮的 php 表单处理模式:当用户提交失败时自动保留已填内容便于修正;提交成功后重定向至带提示参数的页面,既清空表单又避免重复提交,同时确保“邮件已发送”消息可靠显示。
在构建联系表单时,良好的用户体验要求:出错时保留用户输入(避免重复填写),成功后清空表单并明确反馈结果。直接在 $_POST 中 unset() 或依赖页面刷新无法兼顾两者——因为 $_POST 数据仅存在于当前请求生命周期,且未重定向会导致 F5 刷新重复提交。
✅ 正确做法是采用 POST-Redirect-GET(PRG)模式:
以下是完整、安全、可扩展的 contact.php 示例(已移除硬编码邮箱,增强可读性):
\r\n" .
"Reply-To: {$email}\r\n" .
"X-Mailer: PHP/" . phpversion();
// 发送邮件(建议改用 PHPMailer 或 SMTP 提升可靠性)
if (mail('your@example.com', '网站联系表单', $msg, $headers)) {
header('Location: contact.php?sent');
exit;
} else {
$error = '邮件发送失败,请稍后重试。';
}
}
}
?>
✅ 您的邮件已成功发送!
⚠️
? 关键要点说明:
通过该方案,用户再也不会遇到“发完邮件还留着旧数据”或“刷新后提示消失”的问题——它兼顾了健壮性、安全性与用户体验。