我在这里遇到了Session_start()的问题:
警告:session_start()[function.session-start]:无法发送会话缓存限制器 - 已发送的标头(输出始于C:\ xampp \ htdocs \ pages \ home.php:4 )在 C:\ xampp \ htdocs \ charts \ home-chart.php 上 2
在第2行的home-chart.php中,我写了这样的代码:
session_start();
.
.
.
echo ' username: '.$_SESSION['user_name'];
虽然有了这个警告我可以得到$_SESSION['user_name']
的结果但是当我试图清除这部分代码时:
session_start();
我在屏幕上看不到任何结果。 那么,你的解决方案是什么?
<?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>
答案 0 :(得分:15)
如果在<?php
标记之前甚至有空行,则无法设置标题。带行号的文件开头应如下所示:
1. <?php
2. session_start();
3. header('Cache-control: private');
消息显示“第2行发送的标题”,因此您在home.php的第4行输出了一些内容(空格,空白行等)
如果此文件是include,则应将session_start();
放在home.php的顶部,然后在此文件中不需要它。
答案 1 :(得分:3)
这意味着您在调用session_start()之前打印了一些内容。
您不得在session_start()之前打印任何内容。
错误消息表明您首先在第4行的C:\ xampp \ htdocs \ pages \ home.php中打印了一些内容。
答案 2 :(得分:3)
在 head 标记之前编写此代码。如下所示:
<?php ob_start(); ?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
session_start();
?>
</body>
答案 3 :(得分:2)
php.ini file
,session.auto_start = 0
至session.auto_start = 1
答案 4 :(得分:1)
如果以上所有答案都不适合您:
有些编辑在将文件保存为UTF-8时,会在一开始就将额外的字符粘贴到文件中(格式不需要它,但无论如何都要这样做)。然后拒绝在显示文件时向您显示这些字符。要查看您的编辑器是否是其中之一,请尝试保存一个空文件并查看它占用的字节数。如果它超过零(可能是三个),那么你将不得不告诉你的编辑停止搞乱(你如何做到这一点取决于编辑器)。
如果将文件另存为ANSI,则不会发生这种情况。
答案 5 :(得分:1)
尝试在页面的最顶部粘贴<?php ob_start(); ?>
。它将像魔术一样工作。
答案 6 :(得分:1)
我也遇到了同样的问题并通过在php页面顶部写下面的代码来解决这个问题:
<?php
session_start();
?>
答案 7 :(得分:1)
使用
session_cache_limiter(FALSE);
之前
session_start();
这肯定会帮助你:)
答案 8 :(得分:0)
我知道这篇文章有点过时,但我发现当文件的编码设置为包含BOM时,我遇到了这个问题。当我将编码设置为UTF-8(没有BOM)时,它解决了我的问题。