Codeigniter错误消息无法修改标头信息

时间:2013-11-20 12:33:13

标签: php codeigniter

当我运行我的php CodeIgniter项目时,我收到此错误消息:

  

遇到PHP错误

     

严重性:警告

     

消息:无法修改标头信息 - 已发送的标头   (输出始于   C:\的appserv \ WWW \树\应用\模型\ 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);
        }
    }
}

4 个答案:

答案 0 :(得分:10)

使用codeigniter时,最好只建议echo只在视图中使用。

随时随地回送一些数据到浏览器,之后你无法修改标题(这包括尝试重定向,设置内容类型等)

您应该重新组织代码,以便echo仅在视图中完成。这将解决Codeigniter中的标题问题。

在非视图php文件中,在结束括号“} ?>”之后,这还包括额外的空格。

答案 1 :(得分:1)

在调用标题函数之前,您无法显示任何内容。您不应该在模型或控制器上显示任何内容以避免此类错误。如果要从控制器或模型中显示某些内容,则应将输出存储到缓冲区而不是将其发送到浏览器。在调用ob_start()函数之前,可以使用header()函数将输出存储到缓冲区。然后你可以做这样的事情

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

答案 2 :(得分:0)

这是你的问题 - echo $ row-&gt; members_id。 “”; - 正如上面的答案所说,不要在你的控制器中回应一些东西,推动在视图中做 - 总是

答案 3 :(得分:0)

我认为这会有所帮助 在$config['sess_save_path'] = sys_get_temp_dir();文件中使用$config['sess_save_path'] = NULL;代替Application/config/config.php