」の後にスペースを含めず、ヘッダーを使用する前に出力を行うことはできません。 ! 3. ヘッダー以降の PHP コードも実行されます。続き: 問題: 一般に、ヘッダー関数の前の入力内容がヘッダー関数の前に表示されません。"/> 」の後にスペースを含めず、ヘッダーを使用する前に出力を行うことはできません。 ! 3. ヘッダー以降の PHP コードも実行されます。続き: 問題: 一般に、ヘッダー関数の前の入力内容がヘッダー関数の前に表示されません。">
ホームページ >バックエンド開発 >PHPチュートリアル >PHPヘッダー障害の原因の分析と解決策
PHP で header("location:test.php") を使用してジャンプする場合は、次の点に注意してください:
1. location と ":" 記号の間にスペースを入れることはできません。スペースを入れないとエラーが発生します。起こる。
2. ヘッダーを使用する前に、インクルード ページのタグ「?>」の後にスペースを含めないでください。 !
3. ヘッダー以降の PHP コードも実行されます。
続き:
問題: ヘッダー関数の前にコンテンツを入力する
一般的に、同様のものには setcookie() 関数やセッション関数が含まれます。出力ストリームの情報。 header() が実行される前に echo などのステートメントがある場合、後で header() が発生したときに、「警告: ヘッダー情報を変更できません – ヘッダーは既に送信されています…」というエラーが報告されます。つまり、これらの関数の前にテキスト、空白行、復帰などを含めることはできません。exit() 関数を header() 関数の後に追加するのが最善です。たとえば、次の間違った記述では、2 つの PHP コード スニペットの間に空白行があります:
//これは空白行である必要があります
原因:
PHP スクリプトの実行が開始されると、http が送信される可能性があります。メッセージ ヘッダーは、ヘッダー (ヘッダー) 情報と本文情報を同時に送信します。http メッセージ ヘッダー (header() または SetCookie() 関数から) はすぐに送信されず、リストに保存されます。ただし、スクリプトがヘッダー以外の出力を送信すると (HTML または print() 呼び出しなど)、PHP は最初にすべてのヘッダーを送信する必要があります。その後、HTTP ヘッダーを終了し、メイン データの送信を続行します。これ以降、ヘッダー情報を追加または変更する試みは許可されず、上記のエラー メッセージのいずれかが送信されます。
解決策:
キャッシュ(output_buffering)を開くようにphp.iniを変更するか、output_buffering=0をoutput_buffering=4096に変更するか
、またはプログラム内でキャッシュ関数ob_start()、ob_end_flush()などを使用します。原則として、output_buffering が有効な場合、スクリプトが出力を送信するときに PHP は HTTP ヘッダーを送信しません。代わりに、この出力を動的に増加するキャッシュにパイプ処理します (集中出力メカニズムを持つ PHP 4.0 でのみ使用可能)。ヘッダーは実際には送信されないため、ヘッダーを変更/追加したり、Cookie を設定したりすることができます。すべてのスクリプトが終了すると、PHP は自動的に HTTP ヘッダーをブラウザーに送信し、出力バッファーの内容を送信します。
上記は、PHP ヘッダー障害の原因の分析と解決策です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。