header_remove

関数の概要

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ヘッダーを柔軟に管理するための重要な関数です。すべてのヘッダーを一括で削除したり、特定のヘッダーだけを外したりしたい場合に活用できます。特にリダイレクト前やヘッダーを動的に切り替えるシーンで便利なので、正しく理解して使いこなしましょう。