簡體   English   中英

Codeigniter 錯誤信息無法修改頭信息

[英]Codeigniter error message Cannot modify header information

當我運行我的 php CodeIgniter 項目時,我收到此錯誤消息:

遇到 PHP 錯誤

嚴重性:警告

消息:無法修改標頭信息 - 標頭已發送(輸出開始於 C:\\AppServ\\www\\tree\\application\\models\\mtree.php:17)

文件名:core/Common.php

行號:442

第 17 行:

echo $row->members_id . "</br>";

這是我的模型函數:

function convert_all() {
    $this->db->empty_table('table1');
    $this->db->empty_table('table2');
    $this->db->query("INSERT INTO `table1` (`members_id`, `members_username`);
    $query = $this->db->get('table2');
    foreach ($query->result() as $row) {
        if ($row->members_id > 1) {
            echo $row->members_id . "</br>";
        }
        if ($this->isadvanced($row->members_id, $row->members_direct_id)) {
            $this->insert_to_right($row, $row->members_direct_id);
        } else {
            $this->insert_to_left($row, $row->members_direct_id);
        }
    }
}

在使用笨,其最佳建議您echo只在視圖中。

在任何地方回顯隨機向瀏覽器發送一些數據,之后您無法修改標題(這包括嘗試重定向、設置內容類型等)

您應該重新組織您的代碼,以便echo僅在視圖中完成。 這將解決您在 Codeigniter 中的標題問題。

這還包括在非視圖 php 文件中右大括號“ } ?> ”后面的額外空格。

在調用 header 函數之前不能顯示任何內容。 你不應該顯示任何形式的模型或控制器以避免這種錯誤。 如果您想從控制器或模型中顯示某些內容,那么您應該將輸出存儲到緩沖區而不是將其發送到瀏覽器。 您可以在調用header()函數之前使用ob_start()函數將輸出存儲到緩沖區。 然后你可以做這樣的事情

if(true)
{
    header("Location:http://google.com");
}
else
{
   ob_end_flush();
}

這是你的問題 - echo $row->members_id 。 ""; - 正如上面的答案所說,不要在你的控制器中回顯一些東西,在視圖中推動它 - 總是

我認為它會有所幫助 使用$config['sess_save_path'] = sys_get_temp_dir(); 而不是$config['sess_save_path'] = NULL; 在您的Application/config/config.php文件中

暫無
暫無

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

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