PHP标题在脚本底部工作?

时间:2012-12-24 11:47:35

标签: php http-headers

我使用localhost开发网站。最近我很惊讶我正在使用的脚本已完全执行,然后使用“header:('Location:http:// ....')”重定向(这是在底部)。我很惊讶因为在调用任何输出之前我已经读过页面顶部所需的标题。

要查看是否存在差异,请将标题放在脚本顶部。我重定向很好,但脚本没有完全执行。我在“http://stackoverflow.com/questions/7213646/php-header-location-immediately”上读到我可能“需要ignore_user_abort()并且使用php-fpm它是fastcgi_finish_request()来保证整个脚本的执行。”

我是一个新颖的程序员,所以如果有人可以进入如何做到这一点,那将是伟大的,如果它真的是必要的。然而,我的第一个(也是主要的)问题是,这是否有必要,因为脚本正在开始工作。顺便说一下,这对本地主机来说只是一个奇怪的事情,因此当我正确托管网站时,我需要走更复杂的路线吗?

1 个答案:

答案 0 :(得分:1)

header()需要在发送任何其他输出之前发送,这不取决于代码中的位置,而只取决于在使用header()之前发送输出的事实。

如果在发送标题之前使用任何echo / print命令,则会出现错误。

在您希望输出之前阻止输出的一种方法是使用输出缓冲(ob_start,ob_flush等)。请参阅http://php.net/manual/en/function.ob-start.php

输出缓冲将“存储”您的所有输出,直到您准备发送它,即。发送标题后。