PHP表单提交后如何跳转至aboutus页面?表单可正常发送邮件
解决PHP表单提交后跳转至aboutus页面的问题
你的代码目前存在几个问题导致跳转失效,同时还有未定义变量的报错风险,以下是修正后的两种实现方案:
方案1:带提示弹窗的JavaScript跳转
适合需要给用户反馈后再跳转的场景,同时修复原代码中未定义变量的问题:
<?php if (isset($_POST['submit'])) { $to = "myemailhere@mail.com"; $from = $_POST['email']; $name = $_POST['name']; $phone = $_POST['phone']; $email = $_POST['email']; $userSubject = $_POST['subject']; // 保留用户提交的主题 $subject = "Form submission"; // 构建给管理员的消息内容 $message = "Query Request from:" . "\n\n" . "Name : " . $name . "\n\n" . "Email : " . $email . "\n\n" . "Number : " . $phone . "\n\n" . "Subject : " . $userSubject . "\n\n" . "Message : " . $_POST['message']; $headers = "From:" . $from; $headers2 = "From:" . $to; // 发送邮件给管理员 mail($to, $subject, $message, $headers); // 构建给用户的回复内容(原代码中$subject2、$message2未定义) $subject2 = "感谢您的咨询"; $message2 = "您好 " . $name . ",\n\n我们已收到您的咨询,会尽快与您联系。\n\n您提交的主题:" . $userSubject; // 发送回复邮件给用户 mail($from, $subject2, $message2, $headers2); // 弹窗提示后跳转至aboutus页面 echo '<script type="text/javascript">'; echo 'alert("邮件已发送,感谢您的咨询,我们会尽快与您联系。");'; echo 'window.location.href = "/aboutus.php";'; // 替换为你的aboutus页面实际路径 echo '</script>'; exit; // 确保后续代码不再执行 } ?>
方案2:无弹窗的PHP Header跳转(更高效)
适合不需要弹窗提示,直接跳转的场景,注意必须在任何HTML输出之前执行这段代码:
<?php if (isset($_POST['submit'])) { $to = "myemailhere@mail.com"; $from = $_POST['email']; $name = $_POST['name']; $phone = $_POST['phone']; $email = $_POST['email']; $userSubject = $_POST['subject']; $subject = "Form submission"; $message = "Query Request from:" . "\n\n" . "Name : " . $name . "\n\n" . "Email : " . $email . "\n\n" . "Number : " . $phone . "\n\n" . "Subject : " . $userSubject . "\n\n" . "Message : " . $_POST['message']; $headers = "From:" . $from; $headers2 = "From:" . $to; mail($to, $subject, $message, $headers); $subject2 = "感谢您的咨询"; $message2 = "您好 " . $name . ",\n\n我们已收到您的咨询,会尽快与您联系。"; mail($from, $subject2, $message2, $headers2); // 直接跳转至aboutus页面,需确保此代码前无任何输出(包括空格、空行) header("Location: /aboutus.php"); exit; } ?>
关键注意点
- 替换
/aboutus.php为你项目中aboutus页面的实际路径(比如如果是根目录下的aboutus.html就写/aboutus.html) - 使用Header跳转时,PHP代码必须放在页面最顶部,不能有任何HTML代码、空格或空行在这段代码之前,否则会触发"headers already sent"错误
- 原代码中
$subject2和$message2未定义,必须补充才能让用户回复邮件正常发送 - 加上
exit或die()确保跳转后不再执行后续代码
内容的提问来源于stack exchange,提问作者Reacting
相关产品推荐
相关产品推荐

