为什么此代码不会抛出“Header already Sent”错误?

时间:2018-03-22 20:09:27

标签: php xampp http-headers setcookie

Php Doc说:

  •   

    “请记住,在发送任何实际输出之前必须调用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上运行上述脚本。错误报告未被禁用。如果我错过了其中一个分号,我的浏览器输出会出错。 *

1 个答案:

答案 0 :(得分:1)

在发送任何类型的输出之前,可以使用任何与标题必须一起使用的函数...即使单个空格也会引发此类PHP错误。

PHP header() documentation