CakeFest 2024: The Official CakePHP Conference

headers_list

(PHP 5, PHP 7, PHP 8)

headers_list送信した (もしくは送信される予定の) レスポンスヘッダの一覧を返す

説明

headers_list(): array

headers_list() はブラウザもしくはクライアントに送信されるヘッダの数値配列を返します。 これらのヘッダが送信されたかどうかを判断するためには headers_sent() を使用します。

パラメータ

この関数にはパラメータはありません。

戻り値

ヘッダを、数値添字の配列で返します。

例1 Example using headers_list()

<?php

/* setcookie() でレスポンスヘッダをそれ自身に追加します */
setcookie('foo', 'bar');

/* 独自のレスポンスヘッダを定義します。
これはほとんどのクライアントで無視されます */
header("Example-Test: foo");

/* レスポンスがプレーンテキストだと宣言します */
header('Content-Type: text/plain; charset=UTF-8');

/* 送信しようとしているヘッダは? */
var_dump(headers_list());

?>

上の例の出力は、 たとえば以下のようになります。

array(3) {
  [0]=>
  string(19) "Set-Cookie: foo=bar"
  [1]=>
  string(17) "Example-Test: foo"
  [2]=>
  string(39) "Content-Type: text/plain; charset=UTF-8"
}

注意

注意:

ヘッダにアクセスできたりヘッダを出力したりするのは、 それに対応した SAPI を使っている場合のみです。

参考

add a note

User Contributed Notes 3 notes

up
22
arnold at jasny dot net
7 years ago
This function won't work for when you're running PHP from the command line. If will always return an empty array. This can be an issue when testing your project using PHPUnit or Codeception.

To solve this, install the xdebug extension and use `xdebug_get_headers` when on the cli.

<?php
$headers
= php_sapi_name() === 'cli' ? xdebug_get_headers() : headers_list();
?>
up
22
Anonymous
11 years ago
note that it does not return the status header

<?php

header
('HTTP/1.1 301 Moved Permanently', true, 301);

header('foo: bar');
header('a: b');
header('colon less example');

print_r(headers_list());
?>

Array
(
[0] => X-Powered-By: PHP/5.4.7
[1] => foo: bar
[2] => a: b
)
up
-13
SOLO2
11 years ago
Function to check if a particular header has been added to the list:

<?php

function header_sent($header) {
$headers = headers_list();
$header = trim($header,': ');
$result = false;

foreach (
$headers as $hdr) {
if (
stripos($hdr, $header) !== false) {
$result = true;
}
}

return
$result;
}

?>
To Top