header_register_callback

(PHP 5 >= 5.4.0)

header_register_callbackCall a header function

Beschreibung

bool header_register_callback ( callable $callback )

Registers a function that will be called when PHP starts sending output.

The callback is executed just after PHP prepares all headers to be sent, and before any other output is sent, creating a window to manipulate the outgoing headers before being sent.

Parameter-Liste

callback

Function called just before the headers are sent. It gets no parameters and the return value is ignored.

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

Beispiele

Beispiel #1 header_register_callback() example

<?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";
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Content-Type: text/plain

a

Anmerkungen

header_register_callback() is executed just as the headers are about to be sent out, so any output from this function can break output.

Hinweis:

Header sind nur dann zugänglich und werden nur dann gesendet, wenn die genutzte SAPI sie unterstützt.

Siehe auch

  • headers_list() - Gibt eine Liste der gesendeten (oder zum Senden vorbereiteten) Response Header zurück
  • header_remove() - Remove previously set headers
  • header() - Sendet einen HTTP-Header in Rohform
add a note add a note

User Contributed Notes 1 note

up
2
matt@kafene
1 year ago
Note that this function only registers a single callback as of php 5.4. The most recent callback set is the one that will be executed, they will not be executed in order like with register_shutdown_function(), just overwritten.

Here is my test:

<?php

$i
= $j = 0;
header_register_callback(function() use(&$i){ $i+=2; });
header_register_callback(function() use(&$i){ $i+=3; });
register_shutdown_function(function() use(&$j){ $j+=2; });
register_shutdown_function(function() use(&$j){ $j+=3; });
register_shutdown_function(function() use(&$j){ var_dump($j); });
while(!
headers_sent()) { echo "<!-- ... flushing ... -->"; }
var_dump(headers_sent(), $i);
exit;

?>

Results:

headers_sent() - true
$i = 3
$j = 5
To Top