getallheaders

(PHP 4, PHP 5)

getallheadersFetch all HTTP request headers

Description

array getallheaders ( void )

Fetches all HTTP headers from the current request.

This function is an alias for apache_request_headers(). Please read the apache_request_headers() documentation for more information on how this function works.

Return Values

An associative array of all the HTTP headers in the current request, or FALSE on failure.

Changelog

Version Description
5.5.7 This function became available in the CLI server.
5.4.0 This function became available under FastCGI. Previously, it was supported only when PHP was installed as an Apache module.
4.3.3

As of PHP 4.3.3 you can use this function with the NSAPI server module in Netscape/iPlanet/SunONE webservers, too.

4.3.0 Became an alias for apache_request_headers(). Essentially, it was renamed. This is because this function only works with Apache.

Examples

Example #1 getallheaders() example

<?php

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

?>

See Also

Коментарии

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.
2005-04-19 09:25:13
http://php5.kiev.ua/manual/ru/function.getallheaders.html
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($name05) == 'HTTP_'
           {
               
$headers[str_replace(' ''-'ucwords(strtolower(str_replace('_'' 'substr($name5)))))] = $value;
           }
       }
       return 
$headers;
    }
}
?>
2008-07-06 11:52:54
http://php5.kiev.ua/manual/ru/function.getallheaders.html
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
        } 
}
?>
2010-09-08 13:24:48
http://php5.kiev.ua/manual/ru/function.getallheaders.html
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($name05) == 'HTTP_'
           {
               
$name str_replace(' ''-'ucwords(strtolower(str_replace('_'' 'substr($name5)))));
               
$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
2011-06-08 00:16:11
http://php5.kiev.ua/manual/ru/function.getallheaders.html
Автор:
There's a polyfill for this that can be downloaded or installed via composer:

https://github.com/ralouphie/getallheaders
2016-02-11 08:49:27
http://php5.kiev.ua/manual/ru/function.getallheaders.html
Due to the else part.
}else{ 
                    $out[$key]=$value; 
All server Variables are added to the headers list, and that's not the desired outcome.
2019-07-25 10:52:44
http://php5.kiev.ua/manual/ru/function.getallheaders.html
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);
2020-02-28 13:18:06
http://php5.kiev.ua/manual/ru/function.getallheaders.html
Автор:
retrieve token from header:

<?php
function getAuthorizationHeader(){
   
$headers null;
    if (isset(
$_SERVER['Authorization'])) {
       
$headers trim($_SERVER["Authorization"]);
    }
    elseif (isset(
$_SERVER['HTTP_AUTHORIZATION'])) {
       
$headers trim($_SERVER["HTTP_AUTHORIZATION"]);
    } 
    elseif (
function_exists('apache_request_headers')) {
       
$requestHeaders apache_request_headers();
       
$requestHeaders array_combine(array_map('ucwords'array_keys($requestHeaders)), array_values($requestHeaders));

        if (isset(
$requestHeaders['Authorization'])) {
           
$headers trim($requestHeaders['Authorization']);
        }
    }

    return 
$headers;
}

function 
getBearerToken() {
   
$headers getAuthorizationHeader();

    if (!empty(
$headers)) {
        if (
preg_match('/Bearer\s(\S+)/'$headers$matches)) {
            return 
$matches[1];
        }
    }

    return 
null;
}

echo 
getBearerToken();
?>
2022-06-22 12:09:36
http://php5.kiev.ua/manual/ru/function.getallheaders.html
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
2023-01-18 16:21:48
http://php5.kiev.ua/manual/ru/function.getallheaders.html

    Поддержать сайт на родительском проекте КГБ