getallheaders

(PHP 3, PHP 4, PHP 5)

getallheaders -- Fetch all HTTP request headers

说明

array getallheaders ( void )

Fetches all HTTP requests 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.

此函数仅在 PHP 作为 Apache 模块安装时才可使用。

返回值

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

更新日志

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

注释

注: 自 PHP 4.3.3 起也可以在 Netscape/iPlanet/SunONE 服务器的 NSAPI server module 中使用本函数。


add a note add a note User Contributed Notes
tigr at mail15 dot com
19-May-2006 07:08
And even better one, that absolutely mimics getallheaders behaviour (including keynames - first character in each word is uppercase and words separated with '-' instead of underscore), and still does not use regexp:
<?php
function emu_getallheaders() {
   foreach(
$_SERVER as $name => $value)
       if(
substr($name, 0, 5) == 'HTTP_')
          
$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
   return
$headers;
}
?>
tigr at mail15 dot com
19-May-2006 06:44
Just a bit faster version of ZevS' function (does not use regular expressions and does not require POSIX regexps that is in PECL in php6):
<?php
function emu_getallheaders() {
   foreach(
$_SERVER as $name => $value)
       if(
substr($name, 0, 5) == 'HTTP_')
          
$headers[substr($name, 5)] = $value;
   return
$headers;
}
?>
lorro at lorro dot hu
19-Apr-2005 09:25
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.
ZevS
18-Apr-2005 04:24
if PHP installed not as Apache-module:

<?php
function emu_getallheaders() {
   foreach(
$_SERVER as $h=>$v)
       if(
ereg('HTTP_(.+)',$h,$hp))
          
$headers[$hp[1]]=$v;
   return
$headers;
}
?>

I put this code to file "/var/www/include", and edit php.ini:
auto_prepend_file = "/var/www/include"
jukkaho at mail dot student dot oulu dot fi
17-Jan-2003 06:14
This function really is useful. Although $_SERVER['HTTP_*']-variables seem to include all request headers, they are really only the most generally needed - not all of them.

One example that needs this functionality is Digest Authentication (http://www.ietf.org/rfc/rfc2617.txt). When implementing it in PHP script, you can't read client's "Authorization"-header without this function.
linuxapps at yahoo dot com
22-Nov-2002 11:14
I think the previous poster is new to web development, so to keep the confusion down I recommend that other newbies read a tutorial on the HTTP protocol.

The poster meant well, but server variables have absolutely nothing to do with this function (nor the HTTP protocol). They aren't a part of the received browser header. getallheaders() will return the entire BROWSER header string to an array.

That's all it is supposed to do and as it was pointed out (by smclean) that this is a VERY USEFUL feature for certain applications. That's why I looked up the function in the first place!

So, yes, you must use the $_SERVER array to retrieve server variables. And to understand certain variables passed by the server read up on the CGI protocol.
kevin at frontierworld dot com
14-Aug-2000 09:58
You can read the HTTP username and password via the Authorization header by decoding its value from base 64 (if you're using the BASIC authorization scheme). For details about using DBM to maintain usernames and passwords, see http://www.web-hosting.com/dbm.html
jarl at diku dot dk
25-Mar-2000 07:15
All the environment variables can be found here:
http://www.php.net/manual/language.variables.predefined.php