无法使用header.php文件修改标头信息

时间:2012-06-25 22:33:10

标签: php html header http-headers

我有一个header.php文件,该文件包含在网站的每个页面上,它包含信息和开始标记等内容。

现在每当我尝试从网站上的另一个页面发送标题信息时,我知道我不能这样做,因为我已经将HTML发送到客户端计算机。所以我在google搜索后创建了一个函数并将其粘贴在Header.php文件的顶部:

   ob_start();
function redirect($url){
    flush();
    ob_flush();
    header("Location: $url");
    die;
}

我可以从网站的其他任何地方调用它,但我仍然会收到错误。我可能做错了这个功能,但这有点谷歌有时会做的。任何帮助解决这个问题都会很棒,谢谢。

编辑:我得到的错误是“无法修改标题信息 - 标题已经由...发送”。我已经解决了这个问题。

4 个答案:

答案 0 :(得分:1)

flush()将缓冲区写入浏览器 - 与您想要的相反。删除冲洗线。如果要清除缓冲区,请查看http://us2.php.net/manual/en/function.ob-clean.php

答案 1 :(得分:0)

你应该说你得到了什么“错误”,但是如果你在浏览器输出任何内容之后在页面的任何地方包含这个功能,你将得到一个“无法修改标题信息”的错误。

如果你把它放在一个函数中并不重要,它必须在将任何内容输出到浏览器之前。

另外,为什么这个功能包含flush()?这可能会使重定向无法正常工作。

答案 2 :(得分:0)

我相信

ob_end_clean();

是您正在寻找的功能。因此,而不是flush()和ob_flush()函数。

答案 3 :(得分:0)

您只需为标题函数

添加@即可
@header("Location: $url");

但这不是一个好的解决方案。

当您向浏览器发送数据时,您还发送200状态的标题,然后您尝试发送302状态(用于重定向),因此,问题变为发送200状态。

您可以在http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

了解有关标题的更多信息

祝你好运, Zhirayr G。