PHPヘッダー障害の原因の分析と解決策

黄舟
リリース: 2023-03-06 08:02:02
オリジナル
1703 人が閲覧しました

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 サイト (m.sbmmt.com) に注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!