可能重复:
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
}
?>
答案 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换行符(通常被视为空格)也可能导致问题。就像页面开始时的空行新行一样。