简体   繁体   中英

CodeIgniter Cannot modify header information

Hi Currently Im still Learning CodeIgniter. Im trying to use its session and enabled the session in autoload file

First the file structure of files is like this/

I structure my files like this. all templates will go in views/index.php

my problem is I get this error Cannot modify header information

I have a controller Home

<?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);
        }

    } 

My views is something like this

views/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> 

views/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>

then my content

views/template/home.php

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

</div> 

I don't know why do i get that error session. Please hope you could help me. I didn't even set a session. I have just added it in auto load and don't know why i get that header problem. Is my file structure wrong?

A PHP Error was encountered

Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at site/application/controllers/home.php:2)

Filename: libraries/Session.php

Line Number: 675

You probably have a space before the opening <?php tag in your Home controller which is causing output.

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

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

ob_start()

You will have to put the loading of the pages in the controller and not in the views.

<?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);
    }

} 

The view is for display, and you control it using the controller.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM