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" . "rn";
        $headers .= "Content-type:text/html;charset=UTF-8" . "rn";
        // More headers
        $headers .= 'From: <contact@ghanalifestore.com>' . "rn";
        mail($to,$subject,$message,$headers);
        header('Location: reset.php?username='.$username);
        exit();
    }else {
        //statement
    }

基于stackoverflow的此答案,我认为该错误来自变量$message中的HTML代码。我真的不知道如何修改该变量的内容以避免错误。

请帮助我解决这个问题。

ob_start();

html也发送输出,这就是为什么这发生的原因,请使用ob_start();在您的代码中,希望这能解决您的问题。

来自php文档:

请记住,必须在发送任何实际输出之前通过普通HTML标签,文件中的空白或php。

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

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

  • 如何修复"已经发送的标题"。PHP中的错误
  • php标头重定向不起作用

只需将您的代码更改为echo'window.location =" dashboard.php?id = 40";';然后它将工作

更改您的代码: -
echo'window.location =" username ='。$ username";';
exit();

我拔出头发,试图在PHP代码中找到此问题,只是发现清除缓存(Firefox)删除了错误。如果您要更改代码,复制文件等。您的浏览器可能会感到非常困惑,以便每当您有这样的错误或任何涉及读取代码的错误,并且您在屏幕上观察不规则或混淆日志错误,请务必确保清除缓存并重新启动浏览器作为可能的补救措施。

最新更新