PHP头已经发送错误,不是空白错误
这个问题在这里已经有了答案:
该错误实际上是第二次添加任何输出(包括空白,或在这种情况下,标记),您不能再调用头。 作为测试 - 暂时将标题行注释掉。 你会看到你的代码工作。
header("Location:/".$group_url."&".$fname_key);
如果您发送了其他内容,将永远崩溃您的代码。 评论它来证明这一点。 你的代码会神奇地开始工作,直到你取消注释为止。
很可能,您需要重新设计代码,以发送html( <div>
, <span>
等)或调用header()
函数,但不能同时使用两者。 另一种方法是在代码中移动头文件EARLIER,以便在其他任何东西之前执行WAY。 那么,当然,你会想要停止执行(因为你要求重定向。)
浏览器如何工作
为了理解为什么这是一个问题 - 为什么在发送内容(比如HTML)之后你不能发送头文件,想一想浏览器如何看到数据包:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: 28
<div><span>text</span></div>
标题是前三行。 之后,两辆马车返回,然后返回车身。 通过首先发送html,它会强制php计算标题(包括,最重要的是,内容长度!)。然后,发送标题。 你现在正在发送身体。 因此,稍后通过调用header()
,添加另一个标头,您可以要求php及时返回并取消标头,这当然是......它无法做到的。
从PHP自己的手册(http://php.net/manual/en/function.header.php):
请记住,必须在发送任何实际输出之前调用header(),或者通过普通的HTML标记,文件中的空行或来自PHP。 使用include或require函数或其他文件访问函数读取代码,并在调用header()之前输出空格或空行是非常常见的错误。 使用单个PHP / HTML文件时存在同样的问题。
<html>
<?php
/* This will give an error. Note the output
* above, which is before the header() call */
header('Location: http://www.example.com/');
exit;
?>
链接地址: http://www.djcxy.com/p/69671.html