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.