getallheaders

(PHP 4, PHP 5)

getallheaders — Получить все заголовки HTTP-запроса

Описание

array getallheaders ( void )

Получить все заголовки для данного HTTP-запроса.

Эта функция является псевдонимом функции apache_request_headers(). Пожалуйста, обратитесь к описанию функции apache_request_headers() для получения детальной информации о данной функции.

This function is only supported when PHP is installed as an Apache module.

Возвращаемые значения

Ассоциативный массив, содержащий все HTTP-заголовки для данного запроса или FALSE при неудаче.

Список изменений

Версия Описание
4.3.0 Функция стала псефдонимом для apache_request_headers(). Соответствующим образом, она была переименована. Это связано с тем, что эта функция работоспособна только в том случае, если PHP был собран в качестве модуля Apache.

Примечания

Замечание: Начиная с PHP 4.3.3 вы также можете использовать эти функции с модулем NSAPI в серверах Netscape/iPlanet/SunONE.

Смотрите также

Коментарии

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

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