⊗ppPmHpRHP 400 of 447 menu

PHPにおけるHTTPレスポンスヘッダーの問題

HTTPの規則では、まずHTTPヘッダーが送信され、 その後でHTTPレスポンスの本体が送信されます。 このため、PHPの関数headerの取り扱いには 特有の注意点があります。

問題は、この関数を呼び出す前に何らかの画面出力がある場合、 それがレスポンス本体の開始と見なされてしまうことです。 この場合、関数headerの呼び出しは、 headers already sentというテキストの PHP警告を引き起こします。 この時、ヘッダー自体は送信されるかもしれません。 エラーが表示されないこともあります(PHPの設定に依存します)。 しかし、多くの場合、これはローカル環境でのみ発生し、 サイトをインターネットに公開するとすべてが壊れてしまいます。

画面出力とは、あらゆるテキストを意味します。 例えば、以下の通りです:

text <?php header('Content-Type: text/html'); ?>

または空行:

<?php header('Content-Type: text/html'); ?>

またはスペース:

<?php header('Content-Type: text/html'); ?>

またはタグ:

<div> <?php header('Content-Type: text/html'); ?> </div>

またはechoによる出力:

<?php echo 'abc'; header('Content-Type: text/html'); ?>

またはvar_dumpによる出力:

<?php $str = 'abc'; var_dump($str); header('Content-Type: text/html'); ?>

PHPの警告でさえも画面出力となります。 次の例では、意図的に存在しない変数にアクセスし、 警告の出力を引き起こしています:

<?php $text += 1; header('Content-Type: text/html'); ?>

PHPの括弧の終了もまた画面出力を生成します:

<?php echo 'abc'; ?> <?php header('Content-Type: text/html'); ?>

意図的に、関数headerの前に画面出力を生成してください。 発生するエラーメッセージを調べてください。

このコードで犯されている間違いを修正してください:

<!DOCTYPE html> <html> <head> <?php header('Content-Type: text/html'); ?> </head> <body> text <body> <html>
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否