関数の概要
header_remove は、PHPでこれまでに設定したHTTPヘッダーを削除するための関数です。すでに送信予定となっているヘッダーの指定を解除し、不要なヘッダーを除外したい場合に利用します。主に、header() 関数で追加したヘッダーをリセットしたいときに便利です。
パラメータの説明
- string $name (省略可能): 削除したいヘッダー名を指定します。このパラメータを省略すると、セットされたすべてのヘッダーが削除されます。
戻り値
header_remove関数は戻り値を返しません。削除処理が正常に行われれば、そのまま処理が進みます。
使用例
基本的な使い方:すべてのヘッダーを削除
<?php
// Content-Type ヘッダーを設定
header('Content-Type: application/json');
// Location ヘッダーを設定
header('Location: https://example.com');
// すべてのヘッダーを削除
header_remove();
// 以降はヘッダーが送信されない
?>
この例では2つのヘッダーを設定後、header_remove() で全てのヘッダーを削除しています。これにより、HTTPレスポンスにはどのカスタムヘッダーも送信されません。
特定のヘッダーだけを削除する例
<?php
header('Content-Type: text/html; charset=UTF-8');
header('X-Custom-Header: TestValue');
// X-Custom-Headerだけを削除
header_remove('X-Custom-Header');
?>
この例では「X-Custom-Header」だけを削除し、「Content-Type」はそのまま送信されるため、部分的なヘッダーの管理が可能です。
リダイレクト前に不要なヘッダーをリセットする
<?php
header('X-Debug-Info: something');
header('Content-Type: application/json');
// ここでリダイレクトを行う場合、不要なヘッダーをクリア
header_remove();
// Location ヘッダーをセットしリダイレクト
header('Location: https://example.com');
exit;
?>
リダイレクト時に、誤って不要なヘッダーが送信されるのを防ぐため、先にヘッダーをクリアしてからリダイレクト用ヘッダーのみ設定しています。
関連する関数
header()– 新しいHTTPヘッダーを送信するheaders_list()– 現在設定されているすべてのヘッダーを配列で取得するheaders_sent()– ヘッダーがすでに送信済みかどうかを判定する
まとめ
header_remove はPHPで送信予定のHTTPヘッダーを柔軟に管理するための重要な関数です。すべてのヘッダーを一括で削除したり、特定のヘッダーだけを外したりしたい場合に活用できます。特にリダイレクト前やヘッダーを動的に切り替えるシーンで便利なので、正しく理解して使いこなしましょう。
