函数调用之前和之后的headers_sent()

时间:2014-08-16 05:00:33

标签: php

我有这段代码:

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
...

这很奇怪;如何在单行标题之间发送?这怎么可能?

2 个答案:

答案 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可以更好地解释标头的工作原理。