簡體   English   中英

PHP - 無法修改標頭信息 - 標頭已由(輸出開始於

[英]PHP - cannot modify header information - headers already sent by (output started at

我正在使用 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
    }

根據Stackoverflow的這個答案,我認為錯誤來自變量$message中的 HTML 代碼。 我真的不知道如何修改該變量的內容以避免錯誤。

請幫我解決這個問題。

ob_start();

html 也在發送輸出,這就是發生這種情況的原因,所以使用 ob_start(); 在您的代碼之上,希望這可以解決您的問題。

來自php 文檔

請記住,必須在發送任何實際輸出之前調用 header(),無論是通過普通 HTML 標記、文件中的空白行還是從 PHP 發送。

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

順便說一句,這個問題已經回答了:

只需將代碼更改為 echo'window.location="dashboard.php?id=40";'; 然后它會工作

更改您的代碼:-
echo'window.location="username='.$username";';
出口();

只寫下面的代碼,解決了我的問題。 此問題出現在cpanel托管中,而不是在其他托管中

我試圖在 PHP 代碼中找到這個問題,卻發現清除緩存(Firefox)消除了錯誤。 如果您正在更改代碼、復制文件等,您的瀏覽器可能會變得非常混亂,因此每當您遇到此類錯誤或任何涉及代碼讀取方式的錯誤並且您觀察到屏幕上的不規則或令人困惑的日志錯誤時,請務必清除緩存並重新啟動瀏覽器作為可能的補救措施。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM