本文介绍如何通过 php 服务端逻辑配合前端控制,在联系表单成功提交后自动隐藏提交按钮,并展示“感谢留言”提示,避免重复提交且提升用户体验。
要实现“表单提交成功后隐藏提交按钮并显示成功消息”,关键在于状态感知与前后端协同控制。虽然问题中提到了 JavaScript 方案(如 onsubmit 中操作 DOM),但当前代码采用的是传统 PHP 表单提交(action="/sendmail.php")并跳转/重定向的方式——这意味着页面会刷新,JS

在邮件发送及日志写入成功后(即 empty($errors) === true 且 mail() 或 file_put_contents() 成功执行后),启动会话并设置标识:
// sendmail.php 末尾(确保在任何输出前)
if (empty($errors) === true) {
// ... 邮件发送 & 日志写入逻辑 ...
// ✅ 提交成功:设置会话标志
session_start();
$_SESSION['form_submitted'] = true;
// 可选:跳转回原页或感谢页(保持 URL 干净)
header('Location: /contact.php');
exit;
}⚠️ 注意:session_start() 必须在任何 HTML 输出或 header() 调用之前执行;若已开启会话,请勿重复调用。
修改你的表单页面,根据会话状态决定是否渲染表单按钮和感谢消息:
Thank you for contacting us. We will be in touch with you soon.
通过以上 Session 驱动的逻辑,你不仅能精准控制按钮显隐与消息展示,还能从根本上防止重复提交,兼顾健壮性与用户体验。