PHP - 无法修改标头信息 - 已经发送的标头(输出始于

时间:2016-06-25 11:34:40

标签: php

我正在使用PHP,我收到了此消息

  

无法修改标头信息 - 已经发送的标头(输出   从

开始
执行如下代码后

<?php
    if (condition) {

        if (condition) {
            //Statement
        }

        $to = $_POST['email'];
        $subject = "Registration Confirmation";

        $message = '
                <html>
                    <head>
                        <title>'.$subject.'</title>
                    </head>
                </html>
            ';

        // Always set content-type when sending HTML email
        $headers = "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

        // More headers
        $headers .= 'From: <contact@ghanalifestore.com>' . "\r\n";

        mail($to,$subject,$message,$headers);

        header('Location: reset.php?username='.$username);
        exit();

    }else {
        //statement
    }

根据这个答案from Stackoverflow,我认为错误来自变量$message中的HTML代码。我真的不知道如何修改该变量的内容以避免错误。

请帮我解决这个问题。

4 个答案:

答案 0 :(得分:3)

来自php documentation

  

请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。

所以在任何其他类型的输出之前移动header('Location: reset.php?username='.$username);

顺便说一下,这个问题已经回答了:

答案 1 :(得分:1)

ob_start();

html也发送输出,这就是为什么会这样,所以使用ob_start();在代码之上,希望这能解决您的问题。

答案 2 :(得分:0)

只需将您的代码更改为 echo'window.location =“ dashboard.php?id = 40”;'; 那就可以了

答案 3 :(得分:0)

更改代码:-
echo'window.location =“ username ='。$ username”;';
exit();