getallheaders

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

getallheadersEstrae tutti gli header della richiesta HTTP

Descrizione

getallheaders(): array

Recupera tutti gli header HTTP dalla richiesta corrente.

Questa funzione è un alias per apache_request_headers(). Si prega di leggere la documentazione di apache_request_headers() per maggiori informazioni su come funziona questa funzione.

Elenco dei parametri

Questa funzione non contiene parametri.

Valori restituiti

Un array associativo di tutti gli header HTTP nella richiesta corrente.

Log delle modifiche

Versione Descrizione
7.3.0 Questa funzione è diventata disponibile nella FPM SAPI.

Esempi

Example #1 Esempio di getallheaders()

<?php

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

?>

Vedere anche:

add a note

User Contributed Notes 7 notes

up
139
joyview at gmail dot com
17 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
35
Anonymous
9 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
20 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
15
michaelmcandrew at thirdsectordesign dot org
5 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
5
acidfilez at gmail dot com
14 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
-1
majksner at gmail dot com
15 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
3 years 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