提交电子邮件表单后尝试在PHP中重定向

提交电子邮件表单后尝试在PHP中重定向,php,redirect,Php,Redirect,我正在使用MVC框架构建我的第一个站点,用户看到的视图由$_GET['page']变量决定。如果您想查看其他代码,我可以发布它,但据我所知,出现问题的代码显示在下面。我不确定这是否有区别,但这段代码保存在与实际表单本身不同的文件夹中,所有适用的文件都通过index文件夹和include()命令包含 我试图在提交电子邮件表单后将用户重定向到另一个页面,并尝试了header()和使用javascript中的window.location,但我对PHP不熟悉,似乎无法使其工作,它只是提交表单并发送电子

我正在使用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_应该在哪里结束;走?