CodeIgniter无法修改标头信息

时间:2014-01-09 13:39:00

标签: php codeigniter

嗨,目前我还在学习CodeIgniter。我试图使用其会话并在自动加载文件中启用会话

首先文件的文件结构如下/

我像这样构建我的文件。所有模板都将进入views / index.php

我的问题是我收到此错误Cannot modify header information

我有一个控制器主页

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class Home extends CI_Controller{  

        public function index()
        {     
            $view['title'] = 'Welcome';

            $data['data'] = $view;
            $data['content'] = 'home';
            $this->load->view('index',$data);
        }

    } 

我的观点是这样的

视图/ index.php的

<!DOCTYPE html> 
<html lang="en"> 
    <?php     
        //echo ("Welcome User: " . $datas["user_id"]); 
        $this->load->view('header',$data);
        $this->load->view('template/' . $content);
        $this->load->view('footer',$data);
    ?>
</html> 

视图/ header.php文件

 <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content=""> 
    <title><?=$title?></title>  
      <link href="<?=ASSETS_PATH?>css/bootstrap.css" rel="stylesheet"> 
    <link href="<?=ASSETS_PATH?>css/custom.css" rel="stylesheet">  
  </head> 
  <body oncontextmenu="return false">

views / footer.php

   <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="<?=ASSETS_PATH?>js/bootstrap.min.js"></script>
    <script src="<?=ASSETS_PATH?>js/javascript.js"></script> 
  </body>

然后我的内容

views / template / home.php

<div class="jumbotron mod-jumbotron"> 
    <div class="jm-button" style="text-align:center;">
           <h1>Welcome</h1>
    </div>

</div> 

我不知道为什么我会得到错误会话。请希望你能帮助我。 我甚至没有开会。我刚刚在自动加载中添加了它,并且不知道为什么我会得到那个头问题。我的文件结构错了吗?

  

遇到PHP错误

     

严重性:警告

     

消息:无法修改标头信息 - 已发送的标头   (输出从site / application / controllers / home.php:2开始)

     

文件名:libraries / Session.php

     

行号:675

3 个答案:

答案 0 :(得分:1)

您的家庭控制器中的开放<?php标记之前可能有一个空格,导致输出。

// a space here is enough to cause output
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

答案 1 :(得分:0)

在配置文件或自动加载文件中使用此行或在index.php文件中添加可能会解决您的问题。

ob_start()

答案 2 :(得分:0)

您必须将页面加载到控制器中而不是视图中。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Home extends CI_Controller{  

    public function index()
    {     
        $data['title'] = 'Welcome';
        $this->load->view('header',$data);
        $this->load->view('index',$data);
        $this->load->view('footer',$data);
    }

} 

视图用于显示,您可以使用控制器控制它。

<script src="<?= base_url(). 'js/javascript.js' ?>"></script> 
<link href="<?=base_url(). 'css/custom.css'?>" rel="stylesheet">