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

Pri*_*nce 1 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
    }
Run Code Online (Sandbox Code Playgroud)

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

请帮我解决这个问题。

小智 7

ob_start();

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


小智 6

php 文档

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

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

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