Mehdi Hosseini Mehdi Hosseini - 1 month ago 9
PHP Question

Warning: session_start() [function.session-start]: Cannot send session cache limiter

I have a problem with Session_start() here :

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\pages\home.php:4) in C:\xampp\htdocs\charts\home-chart.php on line 2

and in home-chart.php in line 2 I wrote codes like this :

session_start();
.
.
.
echo ' username: '.$_SESSION['user_name'];





although with this warning i can get result of
$_SESSION['user_name']
but when I try to clear this part of the code :

session_start();


I can't see any result in screen.
so, what's your solution?

<?php
@session_start();
require_once '../class/chart.class.php';
$chart = new chart();
?>
<html>
<head>
<link href='../css/home-chart.css' rel='stylesheet' type='text/css' />
</head>
<body>
<div class='float_left' style="margin-bottom:20px;">
<div class='float_left' style='line-height: 9.41px; font-size: x-small;'>0<br /></div> <div class='float_left' style="background-image: url('../image/web/chart.png'); width: 367px; height: 226px; " >
<!-- 1 --><div class='float_left float_left column' style='margin-left:2px;'>
<?php echo $chart->mysql_fetch($chart->daycal(-3)); ?>
</div>
<!-- 2 --><div class='float_left float_left column'>
<?php echo $chart->mysql_fetch($chart->daycal(-2)); ?>
</div>
<!-- 3 --><div class='float_left column' >
<?php echo $chart->mysql_fetch($chart->daycal(-1)); ?>
</div>
<!-- 4 --><div class='float_left column' >
<?php echo $chart->mysql_fetch($chart->daycal(0)); ?>
</div>
<!-- 5 --><div class='float_left column' >
<?php echo $chart->mysql_fetch($chart->daycal(1)); ?>
</div>
<!-- 6 --><div class='float_left column' >
<?php echo $chart->mysql_fetch($chart->daycal(2)); ?>
</div>
<!-- 7 --><div class='float_left column' >
<?php echo $chart->mysql_fetch($chart->daycal(3)); ?>
</div>
</div>


<div class='float_single_full' ></div>
<div class='float_left bottom_chart' style="margin-left:10px;"><?php echo $chart->dayofweek(-3); ?></div>
<div class='float_left bottom_chart'><?php echo $chart->dayofweek(-2); ?></div>
<div class='float_left bottom_chart'><?php echo $chart->dayofweek(-1); ?></div>
<div class='float_left bottom_chart' style='font-weight:bold'><?php echo $chart->dayofweek(0); ?></div>
<div class='float_left bottom_chart'><?php echo $chart->dayofweek(1); ?></div>
<div class='float_left bottom_chart'><?php echo $chart->dayofweek(2); ?></div>
<div class='float_left bottom_chart'><?php echo $chart->dayofweek(3);
echo ' username: ' . $_SESSION['user_name'];
?></div>
</div>
</body>
</html>

Joe Joe
Answer

If you even have blank lines before the <?php tag, then you can't set headers. Your start of file, with line numbers, should look like this:

1. <?php
2. session_start();
3. header('Cache-control: private');

The message says "headers sent at line 2", so you're outputting something (a space, a blank line, whatever) on line 4 of home.php

If this file is an include, you should put your session_start(); at the top of home.php instead, and then you don't need it in this file.