此问题已在此处有答案:
How to fix "Headers already sent" error in PHP(16个回答)
8天前关闭
我有一个header.php文件,其中包括所有重要的信息,以及有网页的横幅。这个header.php包含在每个页面上。
我有它检查会话值,以确保用户被允许在某个页面。如果用户不允许在那里,我踢他们回到登录页面
这就是错误出现的地方。这就是我所拥有的:
include_once ("header.php");
if ($_SESSION['uid']!='programmer')
{
header('Location: index.php');
echo 'you cannot be here';
exit;
}
它重定向到的索引也有标头。那么,有这些多个头引用给我这个错误?
5条答案
按热度按时间omvjsjqw1#
一旦文本输出到浏览器,就不能使用
header()
。由于header.php
包含可能输出HTML,因此不能使用header()
。你可以用几种方法来解决这个问题:
header.php
设置uid会话和其他重要内容)。ob_start()
来缓冲输出。y4ekin9u2#
如果header.php文件“具有banner”,那么它可能会向页面输出一些HTML内容。
您不能在输出内容后发出HTTP标头。
kokeuurv3#
您不能在发送任何其他内容后发送任何标题。一个很可能的罪魁祸首是在你的header.php中关闭
?>
标签后的额外空格。通常,在任何只包含脚本的php文件中完全省略结束标记是一个很好的做法。你的错误应该告诉你到底是哪一行(以及哪个文件)在发送输出。
6xfqseft4#
我遇到了一个类似的错误(似乎也是莫名其妙的),关于重定向函数,它曾经是这样的:
显然,您还需要添加
ob_flush();
来完全清除旧的头。新函数为:希望这能帮助其他有这个问题的人!
dldeef675#
好吧,就这么定了……不知道怎么回事,也许有人能解释一下为什么这会突然起作用。
这是我的代码:
让我重复一遍,现在一切正常!PHP.