无法修改标头信息 - 已经由...发送的标头错误

时间:2011-10-16 17:53:39

标签: php xml header

  

可能重复:
  PHP error: Cannot modify header information – headers already sent

您好我得到此错误,即使您使用完全相同的文件用于其他项目,它工作正常。这个项目是在FB新API实施之后设定的,9月底之后的所有变化确实可能是个问题吗?

我的文件:

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'."\n"; ?>
<users xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Thu, 1 Jan 1970 00:00:00 GMT");
include_once 'config.php';
$con = mysql_connect($db_ip,$db_user,$db_pass);
.
.
.
.
while ($row = mysql_fetch_assoc($result)) {
?>
    <id>
    <image>http://mywebsite/root/xxx-game-fb/proxy.php?url=<?php echo urlencode("http://graph.facebook.com/".$row['fbid']."/picture?type=square"); ?></image>
    <place><?php echo $position; ?></place>
    <name><?php echo $row['name']; ?></name>
    <score><?php echo $row['score']; ?></score>
</id>
<?php
$position++;
}
?>
</users>

我用它作为flash AS3游戏的输入。它创建一个包含用户的表并按顺序设置它们。 Flash在引发此xml文件的函数中也会引发错误。 有人知道这里有什么问题吗? 请帮忙。

1 个答案:

答案 0 :(得分:5)

没有阅读有关header的文档,在调用该方法之前无法输出任何信息,是吗?

  

请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()

首先使用标头,或者如果无法避免则使用某种形式的输出缓冲。


您文件的前5行应该成为:

<?php
  header("Cache-Control: no-cache, must-revalidate");
  header("Expires: Thu, 1 Jan 1970 00:00:00 GMT");
  echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
?>
<users xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

请注意,现在在回显/输出任何内容之前调用header()