PHP “无法修改标题信息”

问题描述:

可能重复:
Headers already sent by PHPPHP “无法修改标题信息”

我一直在使用的标题( “位置:..”)命令everwhere在我的PHP文件。通常,我会运行几次检查(if/else),然后在所有信息都正确的情况下重定向用户,如果不是,则将它们发送到其他地方。

即使在我回显并在html标签之间使用了标题,一切正常。我从来不知道有限制无论如何,我认为我可以在任何地方使用它..

今天我摆弄了一下头标签和突然那些警告消息不断弹出在我的日志文件和事情停止工作。

所以我有两个问题:

1)什么是正确的做法,以投放正确的看法?我应该有条件地将PHP HTML代码包含在同一个文件中吗?

2)为什么它在某些情况下工作?例如我有我的logginIn()函数被称为AFTER HTML和输入字段等已经显示..但它的作品。

+5

这是[一个非常常见的问题](http://*.com/search?q=Cannot+modify+header+information),答案每次都是一样的。 – feeela

1)检查你实际输出代码之前所需要的一切,或使用手动输出缓冲

<?php 
ob_start(); 
echo "hello"; 
ob_end_flush(); 
header("Location:http://*.com"); // redirects you 

甚至更​​糟糕的解决方案,打开output_buffering(php.ini中)。

2)所以,你可能已经得到output_buffering开启使用output buffering

+0

我会一直使用手动输出缓冲。它使您能够更好地控制代码,并且当您无法始终保证ini设置时,使生活更轻松 – adlawson

尝试。

一个简单的例子:

<?php 
ob_start(); 

// ... some more code ... 
header("Location: www.google.com"); 

echo 'something'; 

ob_end_flush(); 

我写这个问题的完整解决方案,在http://digitalpbk.com/php/warning-cannot-modify-header-information-headers-already-sent。希望它能解决所有标题和cookie的问题。