第8章 リクエスト情報 / 第4回 模擬試験

PHPのヘッダー情報の設定(リダイレクト)に関する次の記述のうち、正しいものはどれか。

リダイレクトを行うには`header("Location: URL")`関数を、HTML出力前に呼び出す必要がある。 正解
リダイレクトは`print`文で任意のタイミングに実行できる。
リダイレクトにはデータベース接続が必須である。
`header()`関数は、HTTPレスポンスボディにのみ影響する関数である。
解説
`header("Location: URL")`は、HTTPレスポンスヘッダーを送信してブラウザにリダイレクトを指示する関数です。HTTPの仕様上、ヘッダーは本文(HTML出力など)より前に送信される必要があるため、`echo`や`print`などによる出力が既に始まった「後」に呼び出すと、「Cannot modify header information - headers already sent」というエラーになります。 他の選択肢が誤りである理由は次の通りです。 ・リダイレクトは`print`文では実現できません。あくまでHTTPヘッダーレベルの処理であり、`header()`関数を使う必要があります。 ・リダイレクト自体はHTTPヘッダーの送信だけで完結する処理で、データベース接続は必須ではありません。 ・`header()`関数はHTTPレスポンスの「ヘッダー」を操作する関数です。「レスポンスボディにのみ影響する」というのは逆で、ボディではなくヘッダーに影響します。 例: ```php <?php // この時点でまだHTML出力を開始していないこと header('Location: /login'); exit; ``` (参照: 独習PHP 第4版 第8章 リクエスト情報 8.4.4節 補足 レスポンスヘッダーを設定する①―リダイレクト p.374〜376)