header_remove
(PHP 5 >= 5.3.0, PHP 7)
header_remove — Удаляет предварительно установленные заголовки
Описание
$name
] )Удаляет предварительно установленный функцией header() HTTP заголовок.
Список параметров
-
name
-
Имя удаляемого заголовка.
Замечание: Это регистронезависимый параметр.
Возвращаемые значения
Эта функция не возвращает значения после выполнения.
Примеры
Пример #1 Уничтожение определенного заголовка.
<?php
header("X-Foo: Bar");
header("X-Bar: Baz");
header_remove("X-Foo");
?>
Результатом выполнения данного примера будет что-то подобное:
X-Bar: Baz
Пример #2 Уничтожение всех предварительно установленных заголовков.
<?php
header("X-Foo: Bar");
header("X-Bar: Baz");
header_remove();
?>
Результатом выполнения данного примера будет что-то подобное:
Примечания
Эта функция удалит все заголовки, установленные с помощью PHP, включая cookies, сессию и заголовки X-Powered-By.
Замечание:
Доступ к заголовкам и их вывод будет осуществляться только в случае, если в используемом вами SAPI есть их поддержка.
Смотрите также
- header() - Отправка HTTP заголовка
- headers_sent() - Проверяет были ли и куда отправлены заголовки
- checkdnsrr
- closelog
- define_syslog_variables
- dns_check_record
- dns_get_mx
- dns_get_record
- fsockopen
- gethostbyaddr
- gethostbyname
- gethostbynamel
- gethostname
- getmxrr
- getprotobyname
- getprotobynumber
- getservbyname
- getservbyport
- header_register_callback
- header_remove
- header
- headers_list
- headers_sent
- http_response_code
- inet_ntop
- inet_pton
- ip2long
- long2ip
- openlog
- pfsockopen
- setcookie
- setrawcookie
- socket_get_status
- socket_set_blocking
- socket_set_timeout
- syslog
Коментарии
if you want to remove header information about php version (x-powered-by), you can use:
header_remove('x-powered-by');
alternatively, if you don't have php 5.3 installed, you can do the same thing using "header" command:
header('x-powered-by:');
don't forget the ':' character at the end of the string!
expose_php is php.ini only!
this won't work:
ini_set('expose_php',0);
works:
header_remove('x-powered-by');
When called from a command-line process, this function does nothing when passed a specific header to remove, but it does nonetheless work properly when called with no arguments to remove all headers.
Thus, when unit-testing or executing in some other test harness, if the code you are testing may call `header_remove()`, with the UOPZ and XDebug extensions loaded, you could use the following in order to more effectively test that the expected headers are set [which you would do by inspecting the array returned by `xdebug_get_headers()` after running the code under test, as `headers_list()` does not work despite the headers actually being stored internally as normal]:
<?php
uopz_set_return(
'header_remove',
function($name = null) {
if ($name !== null) {
$pattern = '/^' . preg_quote($name, '/') . ':/i';
$headers = array_filter(
xdebug_get_headers(),
function($header) use($pattern) {
return !preg_match($pattern, $header);
}
);
}
// This works to remove all headers, just not individual headers.
header_remove();
if ($name !== null) {
foreach ($headers as $header) {
header($header);
}
}
},
true
);
?>
If you are using this:
#!/usr/local/bin/php
You can add "-q" at the end of it and the headers will be removed, beacuse header_remove will not remove "Content-type"
#!/usr/local/bin/php -q