CakeFest 2024: The Official CakePHP Conference

getallheaders

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

getallheadersTüm HTTP istek başlıklarını getirir

Açıklama

getallheaders(): array

Mevcut isteğe ait HTTP başlıklarının tümünü bir dizi olarak döndürür.

Bu işlev apache_request_headers() işlevine bir takma addır. Bu işleven nasıl çalıştığı hakkında ayrıntılı bilgi edinmek için apache_request_headers() işlevinin açıklamasına bakınız.

Dönen Değerler

Herşey yolunda gitmişse mevcut isteğe ait tüm HTTP başlıklarını içeren bir ilişkili dizi döndürür, aksi takdirde false döndürür.

Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

Sürüm Bilgisi

Sürüm: Açıklama
7.3.0 Bu işlev CLI sunucusunda kullanılabilir hale geldi.
5.4.0 Bu işlev FPM SAPI ile kullanılabilir hale geldi.

Örnekler

Örnek 1 - getallheaders() örneği

<?php

foreach (getallheaders() as $başlık => $değer) {
echo
"$başlık: $değer\n";
}

?>

Ayrıca Bakınız

add a note

User Contributed Notes 9 notes

up
135
joyview at gmail dot com
15 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
39
Anonymous
8 years ago
There's a polyfill for this that can be downloaded or installed via composer:

https://github.com/ralouphie/getallheaders
up
15
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
28
lorro at lorro dot hu
18 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
12 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
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
up
-1
majksner at gmail dot com
13 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
-4
Dimitri
1 year ago
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();
?>
up
-12
andersmyren at hotmail dot com
4 years ago
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.
To Top