无法发送会话cookie - 标题已经发出已
在PHP下面的代码给出了警告。
<?php
if(!isset($_SESSION))
{
session_start(); // line 4
}
if(!isset($_SESSION['valid_admin']))
{
header("location:Login.php"); //line 9
}
?>
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\wagafashion\Order.php:8) in C:\wamp\www\wagafashion\Lock.php on line 4
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\wagafashion\Order.php:8) in C:\wamp\www\wagafashion\Lock.php on line 4
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\wagafashion\Order.php:8) in C:\wamp\www\wagafashion\Lock.php on line 9
我搜索了Google,发现一个问题here但我至今不明白什么是有提及。我怎么解决它?
[我的应用程序与上述代码工作正常,但前几天系统与蓝屏错误坠毁,我不得不重新安装它,我安装了不同版本的WAMP。这是什么问题?]
<?php
session_start();
if(!isset($_SESSION['valid_admin']))
{
header("location:Login.php"); //line 9
}
?>
会议决不会被设置在if语句,除非你调用session_start()
如果if语句之前调用session_start()(像你应该做的事)你条件将始终为真,使if语句无用。
因此,您可以将session_start()放在第一个if语句之上,然后删除第一个if语句。
首先猜测,检查输出到浏览器的空白输出是否立即可见。
看来你误解了session_start()功能:
在session_start - 开始新的或现有的恢复会话
有没有必要检查是否存在第一。
if(!isset($_SESSION['valid_admin'])){
header("location:Login.php"); //line 9
}
注:
自PHP 4.3.3,呼吁在session_start()之后的会议 以前启动将导致一个E_NOTICE级别的错误。另外, 第二节开始将简单地被忽略。
基于关闭您的警告信息,您有两个文件:Order.php
& Lock.php
。哪些文件是您的发布代码位于?包含文件可能会由于输出已存在而导致冲突。
记住,标题()必须被调用之前的任何实际的输出是 发送,或者通过正常的HTML标记,空行的文件,或者从PHP。 使用include或require, 函数或其他文件访问函数读取代码,并在调用header()之前输出空格或空行 是非常常见的错误。
您还可以在脚本的开头使用http://php.net/manual/en/function.ob-start.php函数。
并检查您是否使用没有BOM的UTF-8 – mrok 2012-07-12 00:07:10
MOST询问S.O的PHP问题请先搜索。 – 2012-07-12 00:32:46