Reputation: 99
Im having a problem with header to redirect. When I try to redirect, it says this...
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at .../head.php:7) in .../init.php on line 3
head.php is as follows:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>grand exchange</title>
<link href="style.css" rel="stylesheet" type="text/css" />
<link href="activate.css" rel="stylesheet" type="text/css" />
</head>
init.php is as follows:
<?php
ob_start();
session_start();
//error_reporting(0);
require 'core/database/connect.php';
require 'core/functions/general.php';
require 'core/functions/users.php';
if(logged_in() === true){ //bans users
$session_user_id = $_SESSION['id'];
$user_data = user_data($session_user_id, 'id','username', 'password','first_name', 'last_name', 'email', 'areacode');
if(user_active($user_data['username']) === false) {
session_destroy();
header('Location: index.php');
exit();
}
}
$errors = array();
ob_flush();
?>
I added an ob_start and ob_flush to init.php because ive seen many of the same problems solved with that. Do you guys have an ideas for me?
Thanks so much!
Upvotes: 0
Views: 66
Reputation: 191789
ob_start
needs to be done before you start any output at all (i.e. before head.php
is even called, or at the start of head.php
).
Ideally you would design your application to build all of the HTML first and emit it at the end.
Upvotes: 1