Cannot Send Session Cookie - Headers Already Sent

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at

Move the session_start(); to top of the page always.

<?php
@ob_start();
session_start();
?>

Cannot send session cookie - headers already sent

It's not possible to set cookies (or send any other headers) after output is started. You could add ob_start() at line 1 to buffer the output.

The right solution is to separate logic from the output. Check out e.g.
http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=21

Warning: session_start(): Cannot send session cookie - headers already sent by (BUT: No error on localhost)

In your php.ini you can turn output_buffering to On for that. That should prevent the header sent errors so your session won't fail.

Troubleshooting Warning: session_start(): Cannot send session cache limiter - headers already sent

You will find I have added the session_start() at the very top of the page. I have also removed the session_start() call later in the page. This page should work fine.

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
<title>Welcome</title>

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {

$('#nav li').hover(
function () {
//show its submenu
$('ul', this).slideDown(100);

},
function () {
//hide its submenu
$('ul', this).slideUp(100);
}
);

});
</script>

</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="header"> </td>
</tr>
<tr>
<td class="menu"><table align="center" cellpadding="0" cellspacing="0" width="80%">
<tr>
<td>

<ul id="nav">
<li><a href="#">Catalog</a>
<ul><li><a href="#">Products</a></li>
<li><a href="#">Bulk Upload</a></li>
</ul>
<div class="clear"></div>
</li>

<li><a href="#">Purchase </a>

</li>
<li><a href="#">Customer Service</a>
<ul>
<li><a href="#">Contact Us</a></li>
<li><a href="#">CS Panel</a></li>

</ul>
<div class="clear"></div>
</li>
<li><a href="#">All Reports</a></li>
<li><a href="#">Configuration</a>
<ul> <li><a href="#">Look and Feel </a></li>
<li><a href="#">Business Details</a></li>
<li><a href="#">CS Details</a></li>
<li><a href="#">Emaqil Template</a></li>
<li><a href="#">Domain and Analytics</a></li>
<li><a href="#">Courier</a></li>
</ul>
<div class="clear"></div>
</li>
<li><a href="#">Accounts</a>
<ul><li><a href="#">Ledgers</a></li>
<li><a href="#">Account Details</a></li>
</ul>
<div class="clear"></div></li>

</ul></td></tr></table></td>
</tr>
<tr>
<td valign="top"><table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td width="22%" height="327" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td> </td>
</tr>
<tr>
<td height="45"><strong>-> Products</strong></td>
</tr>
<tr>
<td height="61"><strong>-> Categories</strong></td>
</tr>
<tr>
<td height="48"><strong>-> Sub Categories</strong></td>
</tr>
</table></td>
<td width="78%" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td> </td>
</tr>
<tr>
<td>
<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="26%"> </td>
<td width="74%"><h2>Manage Categories</h2></td>
</tr>
</table></td>
</tr>
<tr>
<td height="30"> 

</td>
</tr>
<tr>
<td>

</td>
</tr>

<tr>
<td>
<table width="49%" align="center" cellpadding="0" cellspacing="0">
<tr><td>

<?php

if (isset($_SESSION['error']))

{

echo "<span id=\"error\"><p>" . $_SESSION['error'] . "</p></span>";

unset($_SESSION['error']);

}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">

<p>
<label class="style4">Category Name</label>

        <input type="text" name="categoryname" /><br /><br />

<label class="style4">Category Image</label>         

<input type="file" name="image" /><br />

<input type="hidden" name="MAX_FILE_SIZE" value="100000" />

<br />
<br />
<input type="submit" id="submit" value="UPLOAD" />

</p>

</form>

<?php

require("includes/conn.php");

function is_valid_type($file)

{

$valid_types = array("image/jpg", "image/jpeg", "image/bmp", "image/gif", "image/png");

if (in_array($file['type'], $valid_types))

return 1;

return 0;
}

function showContents($array)

{

echo "<pre>";

print_r($array);

echo "</pre>";
}

$TARGET_PATH = "images/category";

$cname = $_POST['categoryname'];

$image = $_FILES['image'];

$cname = mysql_real_escape_string($cname);

$image['name'] = mysql_real_escape_string($image['name']);

$TARGET_PATH .= $image['name'];

if ( $cname == "" || $image['name'] == "" )

{

$_SESSION['error'] = "All fields are required";

header("Location: managecategories.php");

exit;

}

if (!is_valid_type($image))

{

$_SESSION['error'] = "You must upload a jpeg, gif, or bmp";

header("Location: managecategories.php");

exit;

}

if (file_exists($TARGET_PATH))

{

$_SESSION['error'] = "A file with that name already exists";

header("Location: managecategories.php");

exit;

}

if (move_uploaded_file($image['tmp_name'], $TARGET_PATH))

{

$sql = "insert into Categories (CategoryName, FileName) values ('$cname', '" . $image['name'] . "')";

$result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error());

header("Location: mangaecategories.php");

exit;

}

else

{

$_SESSION['error'] = "Could not upload file. Check read/write persmissions on the directory";

header("Location: mangagecategories.php");

exit;

}

?>

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by

Just add ob_start() after session_start()

<?php
session_start();
ob_start();
?>
<!DOCTYPE html>
<html>
<head>
...
...

Cannot send session cache limiter - headers already sent

"Headers already sent" means that your PHP script already sent the HTTP headers, and as such it can't make modifications to them now.

Check that you don't send ANY content before calling session_start. Better yet, just make session_start the first thing you do in your PHP file (so put it at the absolute beginning, before all HTML etc).

error session_start(): Cannot send session cookie - headers already sent by -- in my codeigniter

I think might you have white space on your controller. remove it. and try it



Related Topics



Leave a reply



Submit