0

重複の可能性:
PHP エラー: ヘッダー情報を変更できません – ヘッダーは既に
送信されています ヘッダーは 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

}

?>
4

3 に答える 3

1

ファイルの先頭に空白がないことを確認してください。たとえば、上部に空白行がある場合、このエラーが発生します。

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

} else { 

header( 'Location: teacherlogout.php' ) ;

}
?>
于 2013-01-21T12:56:02.720 に答える
1
Cause:

このエラーは、PHPスクリプトがヘッダーを送信する前にブラウザに出力している場合に発生します。一般的な例は、セッションを開始する前にhtmlタグを印刷したり、Cookieを設定したりすることです。エラーは、変更が必要な行を示しています(この場合はオンになっていますline 431)。

Resolution:

このエラーを解決するには、ヘッダーを送信する前に、ブラウザーに出力しているPHPコードから行を削除します。

このエラーのもう1つの一般的な原因は、ファイルの最初または最後の空白です。修正は、ファイルからその空白を削除することです。エラーメッセージを注意深く読んでください。出力は...で始まり、その後にファイル名と行番号が続くと表示されます。これが、編集する必要のあるファイル(および行)です。2番目のファイル名は無視してください。これは、空白のあるファイルを含むファイルのみです。最初のファイルは編集する必要のあるファイルであり、2番目のファイルではありません。

于 2013-01-21T12:56:27.010 に答える
0

header( 'Location: teacherlogout.php' ) ;

上記の関数 (ヘッダー) は、エコー (画面への出力) がない場合にのみ機能します。関数呼び出しの前に何かが出力されているかどうかを確認します。

HTML 改行 (通常は空白と見なされます) も問題を引き起こす可能性があります。ページの先頭にある空白の改行のように。

于 2013-01-21T13:01:32.467 に答える