【问题标题】:Why I'm getting "cannot modify header information headers already sent by registration_model" error in codeigniter? [duplicate]为什么我在 codeigniter 中收到“无法修改registration_model 已发送的标头信息标头”错误? [复制]
【发布时间】:2011-03-24 15:01:48
【问题描述】:

我的 codeigniter 应用中的模型有问题。我收到了发送标头信息的错误。基本上,codeigniter 抱怨我的注册模型首先发送标头信息。这怎么可能?我认为模型仅用于保存数据库查询方法,仅此而已。有人可以解释一下吗?

这是控制器开头的样子:

function User()
{
    parent::Controller();
    $this->view_data['base_url'] = base_url();
    $this->load->model('User_registration_model');       // don't forget capital, it's important
    $this->load->model('user_map_model');                // don't forget capital, it's important
    $this->load->model('Tribe_model');                   // don't forget capital, it's important
    $this->load->library('email');                       // Loading email library
    $this->load->library('session');                     // sets up the session
    $this->load->library ('form_validation');            // Loading form validation library
    $this->load->helper(array('form', 'url'));  
}

【问题讨论】:

  • 你在哪个文件中使用了header函数,控制器还是视图?
  • 我在 Sarfaz 视图中拥有所有标题信息。我应该提到我需要重写我的registration_model.php,因为当我尝试将它上传到服务器时我丢失了它(我当时失去了连接)并且没有进行任何备份(我知道一个可怕的罪恶程序员永远不应该提交)。但至少我知道我的模型文件有问题。
  • 您是否在 php-tags 之前/之后检查了空格?
  • 请引用您收到的确切错误消息。

标签: php codeigniter


【解决方案1】:

放置这个 ob_start();在您的应用程序目录下的 index.php 的第一行,如下所示:

<?php
ob_start();
/*
 *---------------------------------------------------------------
 * APPLICATION ENVIRONMENT
 *---------------------------------------------------------------

【讨论】:

  • 你能告诉我为什么这在我的情况下有效吗? +1 顺便说一句
  • 这行得通但是为什么??,有人能解释一下吗?
  • 根据@Sarfraz 的回答,ob_start();将打开输出缓冲。当输出缓冲处于活动状态时,脚本不会发送任何输出(标题除外)。
  • @Gery 先生太好了...它解决了我的问题。
  • 我必须登录才能投票 +1,谢谢
【解决方案2】:

请注意,标头应该在之前发送。确保 header 函数之前没有代码/html 甚至空格/缩进,并且在您的视图中第一个开始 php 标记 &lt;?php 以及结束标记 ?&gt; 之前没有任何内容。

【讨论】:

  • 感谢 Sarfraz 的提示 - 我在控制器类之前放了一个空格和注释。删除后一切恢复正常。
  • 是的,在
  • 一个简单的空白搞砸了我的 30 分钟;(感谢@Sarfraz 的提示
  • 刚刚花了 2 天的时间解决这个问题,差点把我的笔记本电脑扔到房间的另一边,在
【解决方案3】:

实际上一些主机提供商他们使用 PHP header(); 来重定向我们的站点,所以在那种服务器中如果我们使用 PHP header() 它会给出错误。我想是这样。在 Code Igniter redirect(); 中使用 PHP header() 来重定向我们的 URL。所以这就是为什么它会给出这个错误!

所以唯一的解决方案是使用 JavaScript 来解决这个问题,我正在使用它!它运行良好。

//Your Code is for redirect
redirect('site/function1');

//Alternate Code for solve this issue
$url = 'site/function1';
echo'
<script>
window.location.href = "'.base_url().'index.php?/'.$url.'";
</script>
';

我不知道这是解决上述问题的正确方法,但我正在使用它,它 100% 有效。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 2012-06-19
    相关资源
    最近更新 更多