array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.header-register-callback.php', 1 => 'header_register_callback', ), 'up' => array ( 0 => 'ref.network.php', 1 => 'ネットワーク 関数', ), 'prev' => array ( 0 => 'function.getservbyport.php', 1 => 'getservbyport', ), 'next' => array ( 0 => 'function.header-remove.php', 1 => 'header_remove', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/network/functions/header-register-callback.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5 >= 5.4.0, PHP 7, PHP 8)
header_register_callback — ヘッダ用の関数を登録する
PHP が出力を送信しはじめるときにコールする関数を登録します。
callback
が実行されるのは、
PHP がすべてのヘッダを送出し終えてからその他の出力を始めるまでの間です。
ここで、送信する前のヘッダを操作できます。
callback
ヘッダを送信する前にコールする関数。パラメータは受け取らず、戻り値も無視されます。
例1 header_register_callback() の例
<?php
header('Content-Type: text/plain');
header('X-Test: foo');
function foo() {
foreach (headers_list() as $header) {
if (strpos($header, 'X-Powered-By:') !== false) {
header_remove('X-Powered-By');
}
header_remove('X-Test');
}
}
$result = header_register_callback('foo');
echo "a";
?>
上の例の出力は、 たとえば以下のようになります。
Content-Type: text/plain a
header_register_callback() はヘッダを送出しようとするときに実行されるので、 この関数の中で何らかの出力をしてしまうと出力が壊れてしまいます。
注意:
ヘッダにアクセスできたりヘッダを出力したりするのは、 それに対応した SAPI を使っている場合のみです。