【发布时间】:2018-03-22 20:09:27
【问题描述】:
PHP 文档说:
"请记住,必须在发送任何实际输出之前调用
header(),无论是通过普通 HTML 标记、文件中的空白行还是从
PHP。”" 这要求您在拨打任何电话之前拨打
setcookie()输出,包括和标签以及任何空格。”
我了解上述要求的重要性,但是下面的代码如何运行而不抛出 "Headers already Sent" 错误?
<html>
<body>
<h1>Hey</h1>
<?php
echo "Hello";
setcookie("hey","hellocookie");
//header("Pragma: no-cache");
//echo $_COOKIE['hey'];
header('Location: http://www.example.com/');
?>
</body>
</html>
header('Location: http://www.example.com/');无需投掷即可工作 错误。此外,setcookie("hey","hellocookie");工作,即使 在它之前有一个输出echo "Hello";。 我用echo $_COOKIE['hey'];对其进行了测试,它确实打印了heycookie.
*注意:在 Localhost/Xampp 上运行上述脚本。错误报告未禁用。如果我错过了其中一个分号,我确实会在浏览器输出上收到错误。 *
【问题讨论】:
-
您可能禁用了错误报告。您可能启用了输出缓冲。
-
确实会打印其他错误,所以我猜错误报告没有被禁用。如何检查是否启用了输出缓冲?
-
如果
phpinfo()某处... -
这个问题怎么是重复的?我不是要修复它。我只想知道这段代码是如何工作的,尽管它不符合要求。事实上,我没有要修复的错误......
-
有人能解释一下这个问题是如何与劳伦斯提出的问题重复的吗? ://
标签: php xampp http-headers setcookie