我有这段代码:
include('file1.php');
include('file2.php');
include('lib1.php');
include('lib2.php');
include('lib3.php');
function __autoload($c) { include('classes/'.$c.'.php'; }
$obj = new Class1();
$obj->method();
...
在$obj->method
中,有一些功能可以添加Cookie。我收到的标题已经发送错误。所以我添加了var_dump(headers_sent());
,我看到了一个非常奇怪的行为。这就是我的所作所为:
// ... the same code above
var_dump(headers_sent()); // False
$obj = new Class1(); // True, the first line of __cunstruct() inside
$obj->method(); // True, the first line of method()
var_dump(headers_sent()); // True
...
这很奇怪;如何在单行标题之间发送?这怎么可能?
答案 0 :(得分:0)
我有同样的问题。
事实上:
include('file1.php');
include('file2.php');
include('lib1.php');
include('lib2.php');
include('lib3.php');
正在展示一些角色。尝试用UTF-8打开这个文件(没有BOM),Notepad ++可以做到这一点。
记得关闭php标签或者只是打开它:
<?php
$foo = "bar";
或者
<?php
$foo = "bar";
?>
请记住,如果你忘了这样的话:
<?php
$foo = "bar";
?>
(blank space)
将输出空格并发送标题。
感谢。
答案 1 :(得分:0)
此问题通常是由php文件中的意外空格引起的。我猜你包含的其中一个文件有额外的空格,这会发送标题。
Here可以更好地解释标头的工作原理。