2011-08-03 37 views
-1

可能重复:
Headers already sent by PHPFacebook的IFRAME - 头已经发出已

我不知道,如何处理此错误消息。

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /data/web/virtuals/8301/virtual/www/subdom/fb/soutez/fbmain.php:1) in /data/web/virtuals/8301/virtual/www/subdom/fb/soutez/facebook.php on line 37 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/web/virtuals/8301/virtual/www/subdom/fb/soutez/fbmain.php:1) in /data/web/virtuals/8301/virtual/www/subdom/fb/soutez/facebook.php on line 37 

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/8301/virtual/www/subdom/fb/soutez/fbmain.php:1) in /data/web/virtuals/8301/virtual/www/subdom/fb/soutez/base_facebook.php on line 589 

什么是错?我的Facebook应用程序在IE中无法使用,所以我尝试添加P3P标题。从此时起,我的生活就是地狱。而且我也没有得到,我的应用出了什么问题。它只包含小表格,当我尝试提交此表单时,IE将我重定向回表单,而不是submit.php

+0

也许发布代码的相关部分可能会有用。 Re什么是错误的:您只能在发送任何内容之前添加header()*在PHP文件的开始处检查空格(或Unicode BOM)**和**包含的任何文件。 – Piskvor

+0

为什么你需要一个P3P头来解决一些错误?即使在没有这种头文件的IE中,一切都应该可以工尝试找到真实/最初的错误,而不是固定周围。 – feeela

+0

我写了,为什么我加了P3P头。因为我的应用只包含小型表单,当我尝试提交此表单时,IE将我重定向回表单,而不是submit.php ....我发现,可以通过添加P3P来解决问题。 – Kolemjdouci

回答

1

您需要在将任何输出实际发送到客户端之前发送所有标题。有两种解决方案。

  1. 将header()调用放在文档的顶部(或在任何调用echo和/或/ print之前)。
  2. 使用output buffering并输出文档末尾的所有缓冲内容。
+0

在任何PHP或HTML内容之前,我都有这个头()。 – Kolemjdouci

0

您可以在脚本的开头放置

<?php ob_start(); ?> 

+0

我忽略了所有这些带有空格的解决方案,但是NetBeans保存了我的一天,谢谢。提交后重定向到我的表单仍然在这里。 – Kolemjdouci

1

看来您正在使用PHP-SDK,其中facebook.php内的Facebook类使用session_start();

所以你设定P3P头之前创建类的实例,也许是这样的:

$facebook = new Facebook(array(
    'appId' => 'app_id', 
    'secret' => 'app_secret', 
)); 
... 
some code here 
... 
header('P3P: CP=HONK'); 

你需要做初始化Facebook类之前只发标题是什么:

header('P3P: CP=HONK'); 
$facebook = new Facebook(array(
    'appId' => 'app_id', 
    'secret' => 'app_secret', 
)); 
+0

一切都是一样的。我试图将头文件放到与初始化Facebook类相同的文件中。但情况更糟。现在,我点击应用程序选项卡,它会抛出一些会话错误,然后在注册表单中重定向我。非常好。 – Kolemjdouci

+0

确保你的文件或其他文件的开头没有“空白”。例如'<?php'标签之前的空格 – ifaour