関数の概要
PHPの header 関数は、HTTPレスポンスヘッダーを送信するために使われます。これにより、ブラウザに対してリダイレクトやコンテンツタイプの指定、キャッシュ制御などの指示を送ることが可能です。HTTPレスポンスヘッダーはHTMLコンテンツよりも前に送信する必要があるため、header 関数は通常、スクリプトの出力が始まる前に呼び出します。
パラメータの説明
- string $header
送信するヘッダーの文字列。例:「Location: https://example.com」や「Content-Type: text/html; charset=UTF-8」など。 - bool $replace(省略可能)
同じ種類のヘッダーが既に送信されている場合に置き換えるかどうかを指定します。デフォルトはtrue(置き換える)。 - int $response_code(省略可能)
HTTPレスポンスコードを明示的に指定できます。例:301(リダイレクト)や404(ページが見つからない)など。
戻り値
header 関数は戻り値を返しません(void)。ただし、ヘッダー送信に失敗すると警告が発生しますので、スクリプトの出力状態に注意が必要です。
使用例
基本的な使い方
<?php
// ページを別のURLへリダイレクトする
header('Location: https://example.com');
exit;
?>
この例ではアクセスしたページを「https://example.com」へリダイレクトします。リダイレクト後に処理が継続しないように exit; を使います。
コンテンツタイプを指定する例
<?php
// レスポンスのコンテンツタイプをJSONに指定する
header('Content-Type: application/json; charset=UTF-8');
echo json_encode(['status' => 'success']);
?>
APIレスポンスのようにJSONを返す際に、ブラウザやクライアントに正しいデータ形式を伝えられます。
ステータスコードを指定する例
<?php
// 404 Not Foundを返す
header('HTTP/1.1 404 Not Found');
echo 'このページは見つかりませんでした。';
?>
リクエストされたページが存在しない場合に、HTTPステータスコード404を送信してブラウザにエラーを通知します。
関連する関数
setcookie– HTTPレスポンスヘッダーにクッキーをセットするhttp_response_code– ステータスコードを手軽に設定するheaders_sent– すでにヘッダーが送信されているかを確認する
まとめ
PHPの header 関数は、HTTPレスポンスヘッダーの制御に欠かせない重要な機能です。リダイレクト、コンテンツタイプやステータスコードの指定に使い、ユーザーのブラウザやAPIクライアントに適切な指示を送ることができます。レスポンスの出力が始まる前に呼び出す必要があるため、使用時はヘッダー送信のタイミングに注意しましょう。
