• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPのheaderの「一度に複数のヘッダを送信」とは?)

PHPのheader関数とは?一度に複数のヘッダを送信できない理由とは?

このQ&Aのポイント
  • PHPのheader関数は、HTTPヘッダを送信するための関数です。
  • しかし、PHPのバージョン4.4.2および5.1.2以降では、一度に複数のヘッダを送信することができません。
  • この制限は、ヘッダインジェクション攻撃を防ぐための措置です。

質問者が選んだベストアンサー

  • ベストアンサー
noname#68775
noname#68775
回答No.1

header 関数の引数に複数指定できないだけでは? NG: header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT"."\n"."Etag: $etag"); ちなみに、MySQLのクエリーを実行する関数 mysql_query にも複数指定することはできません。 NG: $query = "select * from hoge1; select * from hoge2"; mysql_query($query); SQLインジェクションをある程度防げます。

pyonco2
質問者

お礼

早速のご回答ありがとうございます。 ということは、以前は NG: header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT"."\n"."Etag: $etag"); の書式があったけども、禁止されたということですか? そして、 header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT"); header("Etag: $etag"); の使い方は、問題ないということでしょうか? 念のため、ご教示いただけると幸いです。よろしくお願いいたします。

その他の回答 (1)

noname#68775
noname#68775
回答No.2

もともと複数指定することはできないのではないでしょうか? 詳しい経緯は分かりませんが、不正アクセス対策?なのではないでしょうか? header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT"); header("Etag: $etag"); はOKです。 echo する前であれば、header 関数はいくつでも呼べます。

pyonco2
質問者

お礼

早速、ご回答ありがとうございます。 header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT"); header("Etag: $etag"); がOKということであれば問題は解決しました。 実際にPHPに書き込んで試してみたところ、 エラーもなく、また、ヘッダ情報にも反映されています。 (PHPのバージョンは4.4.6) 「一度に複数のヘッダを送信」の意図がいまいち釈然としませんが、 きっとANo.1でご回答いただいたことなのでしょうね。 ありがとうございました。

関連するQ&A