无法修改收到的标头信息错误

时间:2013-01-21 12:51:34

标签: php javascript ajax

  

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

if ((isset($username)) && (isset($userid))){ 

}else{ 

header( 'Location: teacherlogout.php' ) ;

}

我上面有一个if / else语句,我想要做的是,如果满足else语句,则导航到teacherlogout.php页面。但不是这样,我得到一个错误说明:

Warning: Cannot modify header information - headers already sent by (output started at /:431) in / on line 1654 

我不明白我做错了什么?第431行只是var qremain = <?php echo (int)$_SESSION['textQuestion']; ?>;代码行。第1654行是header( 'Location: teacherlogout.php' ) ;行。这里发生了什么?

更新

实际上最好使用ajax导航到后台的teacherlogout.php脚本:

<?php   

}else{ 

echo "Please Login to Access this Page | <a href='./teacherlogin.php'>Login</a>";

?>

<script type="text/javascript">

        $.ajax({    
        url: "teacherlogout.php",
        async: false,
        type: "POST",
      });

</script>

<?php

}

?>

3 个答案:

答案 0 :(得分:1)

确保文件顶部没有任何空格。例如,如果顶部有一个空行,则会出现此错误。

(Blank Line Here)
<?php
if ((isset($username)) && (isset($userid))){ 

} else { 

header( 'Location: teacherlogout.php' ) ;

}
?>

答案 1 :(得分:1)

Cause:

如果您的PHP脚本在发送标头之前正在打印到浏览器,则会导致此错误。一个常见的例子是在开始会话或设置cookie之前打印html标签。该错误告诉该行需要更改(在这种情况下,它位于line 431)。

Resolution:

要解决此错误,请在发送标题之前删除正在打印到浏览器的PHP代码中的行。

此错误的另一个常见原因是文件开头或结尾的空格。修复是从文件中删除该空格。请仔细阅读错误消息。它表示输出从...开始,后跟文件名和行号。这是您需要编辑的文件(和行)。忽略第二个文件名 - 这只是包含具有空格的文件的文件。第一个文件是您必须编辑的文件,而不是第二个文件。

答案 2 :(得分:0)

header( 'Location: teacherlogout.php' ) ;

上述功能(标题)仅在没有回声(输出到屏幕)时才有效。在函数调用之前检查是否打印了某些内容。

HTML换行符(通常被视为空格)也可能导致问题。就像页面开始时的空行新行一样。