ConFoo 2025

getallheaders

(PHP 4, PHP 5, PHP 7, PHP 8)

getallheadersObtém todos os cabeçalhos da requisição HTTP

Descrição

getallheaders(): array

Obtém todos cabeçalhos HTTP da requisição atual.

Essa função é um sinônimo de apache_request_headers(). Veja a documentação de apache_request_headers() para mais informações dessa função.

Parâmetros

Esta função não possui parâmetros.

Valor Retornado

Um array associativo de todos cabeçalhos HTTP da requisição atual.

Registro de Alterações

Versão Descrição
7.3.0 Esta função tornou-se disponível na SAPI FPM.

Exemplos

Exemplo #1 Exemplo da função getallheaders()

<?php

foreach (getallheaders() as $name => $value) {
echo
"$name: $value\n";
}

?>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 7 notes

up
134
joyview at gmail dot com
16 years ago
it could be useful if you using nginx instead of apache

<?php
if (!function_exists('getallheaders'))
{
function
getallheaders()
{
$headers = [];
foreach (
$_SERVER as $name => $value)
{
if (
substr($name, 0, 5) == 'HTTP_')
{
$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
}
}
return
$headers;
}
}
?>
up
17
michaelmcandrew at thirdsectordesign dot org
4 years ago
A simple approach to dealing with case insenstive headers (as per RFC2616) is via the built in array_change_key_case() function:

$headers = array_change_key_case(getallheaders(), CASE_LOWER);
up
36
Anonymous
8 years ago
There's a polyfill for this that can be downloaded or installed via composer:

https://github.com/ralouphie/getallheaders
up
28
lorro at lorro dot hu
19 years ago
Beware that RFC2616 (HTTP/1.1) defines header fields as case-insensitive entities. Therefore, array keys of getallheaders() should be converted first to lower- or uppercase and processed such.
up
5
acidfilez at gmail dot com
13 years ago
dont forget to add the content_type and content_lenght if your are uploading file:

<?php
function emu_getallheaders() {
foreach (
$_SERVER as $name => $value)
{
if (
substr($name, 0, 5) == 'HTTP_')
{
$name = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))));
$headers[$name] = $value;
} else if (
$name == "CONTENT_TYPE") {
$headers["Content-Type"] = $value;
} else if (
$name == "CONTENT_LENGTH") {
$headers["Content-Length"] = $value;
}
}
return
$headers;
}
?>

chears magno c. heck
up
-2
majksner at gmail dot com
14 years ago
apache_request_headers replicement for nginx

<?php
if (!function_exists('apache_request_headers')) {
function
apache_request_headers() {
foreach(
$_SERVER as $key=>$value) {
if (
substr($key,0,5)=="HTTP_") {
$key=str_replace(" ","-",ucwords(strtolower(str_replace("_"," ",substr($key,5)))));
$out[$key]=$value;
}else{
$out[$key]=$value;
}
}
return
$out;
}
}
?>
up
-1
divinity76 at gmail dot com
1 year ago
warning, at least on php-fpm 8.2.1 and nginx, getallheaders() will return "Content-Length" and "Content-Type" both containing emptystring, even for requests without any of these 2 headers. you can do something like

<?php
$request_headers
= getallheaders();
if((
$request_headers["Content-Type"] ?? null) === "" && ($request_headers["Content-Length"] ?? null) === "") {
// probably a getallheaders() bug, not actual request headers.
unset($request_headers["Content-Type"], $request_headers["Content-Length"]);
}
?>

- might be a bug in nginx rather than php-fpm, i don't know. anyway a real request wouldn't leave them at emptystring
To Top