提交电子邮件表单后尝试在PHP中重定向
我正在使用MVC框架构建我的第一个站点,用户看到的视图由$_GET['page']变量决定。如果您想查看其他代码,我可以发布它,但据我所知,出现问题的代码显示在下面。我不确定这是否有区别,但这段代码保存在与实际表单本身不同的文件夹中,所有适用的文件都通过index文件夹和include()命令包含 我试图在提交电子邮件表单后将用户重定向到另一个页面,并尝试了header()和使用javascript中的window.location,但我对PHP不熟悉,似乎无法使其工作,它只是提交表单并发送电子邮件提交电子邮件表单后尝试在PHP中重定向,php,redirect,Php,Redirect,我正在使用MVC框架构建我的第一个站点,用户看到的视图由$_GET['page']变量决定。如果您想查看其他代码,我可以发布它,但据我所知,出现问题的代码显示在下面。我不确定这是否有区别,但这段代码保存在与实际表单本身不同的文件夹中,所有适用的文件都通过index文件夹和include()命令包含 我试图在提交电子邮件表单后将用户重定向到另一个页面,并尝试了header()和使用javascript中的window.location,但我对PHP不熟悉,似乎无法使其工作,它只是提交表单并发送电子
<?php
ob_start();
$error = ""; $successMessage = "";
if ($_POST) {
if (!$_POST["email"]) {
$error .= "An email adress is required.<br>";
}
if (!$_POST["subject"]) {
$error .= "A subject is required.<br>";
}
if (!$_POST["contactMessage"]) {
$error .= "A message is required.<br>";
}
if ($_POST['email'] && filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) === false) {
$error .= "A valid email adress is required.<br>";
}
if ($error != "") {
$error = '<div class="contactFormElement infoMessage" role="alert"><p><strong>There were error(s) in your form:</strong></p>' . $error . '</div>';
} else {
$emailTo = "example@example.com";
$subject = $_POST['subject'];
$contactMessage = $_POST['contactMessage'];
$headers .= "From: Mailer <mailer@example.com";
$headers .= " Reply-To: ".$_POST['email'];
$headers .= " Return-Path: ".$_POST['email'];
if (mail($emailTo, $subject, $contactMessage, $headers)) {
header('Location: index.php');
exit();
} else {
$error = '<div class="contactFormElement infoMessage"><p><strong>Your message was not sent. Please try again later.</strong></p></div>';
}
}
}
ob_end_flush();
?>
我尝试将header()放在代码中当前所在的位置,并尝试将此javascript放在它的位置
echo '<script type="text/javascript">
window.location = "http://www.google.com/"
</script>';
echo'
window.location=”http://www.google.com/"
';
当我回显javascript时,它所做的只是提交表单和显示窗口。位置=”http://www.google.com/“在屏幕上,它似乎并没有实际执行脚本,使用header()命令,它只是退出页面,而不是重定向它
任何帮助都将不胜感激,谢谢 添加ob_end_flush();在标题(“..”)之前 这个答案只适用于将来看这个问题的人。我能够得到
标题()代码>功能正常工作,但它需要重新设计我的整个站点在页面之间的重定向方式,因此我不会把这里显示的任何内容看得太重,因为这是我第一次尝试自己编写代码,并且有很多缺陷。我这样尝试过,如果(mail($emailTo,$subject,$contactMessage,$headers)){ob end\u flush();header('Location:index.php');}但我认为这是不对的。ob_应该在哪里结束;走?