PHP电子邮件表单don';不要转到标题上提供的位置

PHP电子邮件表单don';不要转到标题上提供的位置,php,header,sendmail,Php,Header,Sendmail,我有一个html格式的php文件(contacts.php),提交另一个php文件(contact_en.php)后调用,如下所示: <?php $to = "xxxx@xxxx.xx".","."xxxx@xxxx.xx"; $nome = $_POST['name']; $email = $_POST['email']; $mensagem = $_POST['message']; $subject

我有一个html格式的php文件(
contacts.php
),提交另一个php文件(
contact_en.php
)后调用,如下所示:

    <?php
        $to = "xxxx@xxxx.xx".","."xxxx@xxxx.xx";
        $nome = $_POST['name'];
        $email = $_POST['email'];
        $mensagem = $_POST['message'];
        $subject = "Contato do website EN";
        $headers = "From: xxxx@xxxx.xx";
        $body = "From: $nome \n\n Email: $email \n\n Message: $mensagem";
        $sent = mail($to, $subject, $body, $headers);

        if($sent) {
            header("Location:../en/success.php");
        } else {
            print "A system error has occurred, please try again later.";
        }
    ?>

我遇到的问题是,代码发送电子邮件,但它没有转到
success.php
,而是停留在
contact_en.php
(空白页)

我是php的新手,那么我该如何修复它呢


感谢您的帮助:)

如果echo语句在页眉之前使用,则不要重定向页面。所以你也可以试试这个。echo
window.location='url'
要设置正确的
位置
-头,您必须遵循一些规则。根据浏览器的不同,它可能在不遵循以下条件的情况下工作,但更安全:

  • 将绝对URI与方案、域、端口、路径等一起使用
    http://www.domain.com/en/success.php
  • 冒号和文本之间的空格:
    标题(“位置:http://...");
  • 添加
    退出
    标题()之后
  • 因此,最后,请使用此选项(可能需要调整路径):


    需要注意的是,在发送任何实际输出之前必须调用header()(在PHP4和更高版本中,您可以使用输出缓冲来解决此问题),请尝试使用绝对URI(http://...)增加
    exit
    header()
    @hushyborad之后,感谢您的回复,但没有起作用,我尝试了以下操作:header(“位置:);exit;(在不同的行中),并且保持不变,我还尝试了同一行中的所有操作,如下所示:header(“位置:)exit;并给出以下错误:Parse error:syntax error,意外的“exit”(T_exit)in…在您的上一个代码中,右括号后缺少分号请在php代码中的页面顶部添加错误报告(E_ALL)。我确信页面上肯定有一些错误或警告,结果页面是空白的,谢谢AmitThanks@Hushyborad。这是我的问题的解决方案,但更奇怪的是,我有其他网站使用相同的代码,没有这个问题。ob_start();标题(“位置:);退出();有时它依赖于托管服务器。这两个网站都托管在同一个托管公司,并拥有相同的服务。更奇怪的是…感谢Reeno,不幸的是它对我不起作用,问题在于标题,在遵循Amit Shah的建议后,它给了我一个警告:警告:无法修改标题信息。现在我将使用来自@Hushyborad的解决方案,但我必须更好地研究php标题。尽管如此,您的信息还是有用的。再次感谢。警告
    无法修改标题信息
    说,在您调用
    标题之前有一些文本输出。如果有任何字符发送到浏览器,它不起作用。这是完整的警告:Can不修改标题信息-标题已由发送(输出开始于/xxxx/xxxx/xxxx/xxx/page-contact_en.php:1)在第14行的/xxxx/xxxx/xxxx/xxx/page-contact_en.php中。抱歉,我不知道我将字符发送到浏览器的什么位置?我已清除了所有空白。page-contact_en.php的第14行中有什么内容?在您的建议之后:标题(“位置”);使用http://
    
    if($sent) {
        header("Location: http://".$_SERVER['HTTP_HOST']."/en/success.php");
        exit;
    } else {
        print "A system error has occurred, please try again later.";
    }