apache_request_headers

(PHP 4 >= 4.3.0, PHP 5)

apache_request_headersدریافت تمام سرآیندهای درخواست HTTP

Description

array apache_request_headers ( void )

تمام درخواست‌های HTTP را از درخواست فعلی دریافت می‌کند.

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

Return Values

یک آرایه شرکت‌پذیر از تمام سرایندهای HTTP در درخواست فعلی یا مقدار FALSE در صورت شکست.

Changelog

Version Description
4.3.3

Note:

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 پیش از PHP 4.3.0, apache_request_headers() از getallheaders() فراخوانده می‌شد. پس از PHP 4.3.0, getallheaders() یک جایگزین برای apache_request_headers() است.

Examples

Example #1 مثال apache_request_headers()

<?php
$headers 
apache_request_headers();

foreach (
$headers as $header => $value) {
    echo 
"$header$value <br />\n";
}
?>

The above example will output something similar to:

Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0
Host: www.example.com
Connection: Keep-Alive

Notes

Note:

شما همچنین می‌توانید مقدار متغیرهای معمول CGI را از محیط بخوانید البته امکان این امر به استفاده از PHP بر ماجول Apache بستگی دارد. از phpinfo() برای نمایش فهرست تمام متغیرهای محیط موجود استفاده کنید.

Note:

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

See Also

add a note add a note

User Contributed Notes 3 notes

up
5
limalopex.eisfux.de
8 years ago
I didn't found a replacement for apache_request_headers() in PHP::Compat (http://pear.php.net/package/PHP_Compat) so I wrote my own:

<?php
if( !function_exists('apache_request_headers') ) {
///
function apache_request_headers() {
 
$arh = array();
 
$rx_http = '/\AHTTP_/';
  foreach(
$_SERVER as $key => $val) {
    if(
preg_match($rx_http, $key) ) {
     
$arh_key = preg_replace($rx_http, '', $key);
     
$rx_matches = array();
     
// do some nasty string manipulations to restore the original letter case
      // this should work in most cases
     
$rx_matches = explode('_', $arh_key);
      if(
count($rx_matches) > 0 and strlen($arh_key) > 2 ) {
        foreach(
$rx_matches as $ak_key => $ak_val) $rx_matches[$ak_key] = ucfirst($ak_val);
       
$arh_key = implode('-', $rx_matches);
      }
     
$arh[$arh_key] = $val;
    }
  }
  return(
$arh );
}
///
}
///
?>
up
4
callum85 at notspam dot msn dot com
7 years ago
There is a simple way to get request headers from Apache even on PHP running as a CGI. As far as I know, it's the only way to get the headers "If-Modified-Since" and "If-None-Match" when apache_request_headers() isn't available. You need mod_rewrite, which most web hosts seem to have enabled. Put this in an .htacess file in your web root:

RewriteEngine on
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]

The headers are then available in PHP as
<?php
  $_SERVER
['HTTP_IF_MODIFIED_SINCE'];
 
$_SERVER['HTTP_IF_NONE_MATCH'];
?>

I've tested this on PHP/5.1.6, on both Apache/2.2.3/Win32 and Apache/2.0.54/Unix, and it works perfectly.

Note: if you use RewriteRules already for clean URLs, you need to put the above rules AFTER your existing ones.
up
0
uli dot staerk at globalways dot net
1 day ago
A slightly modified version from  limalopex.eisfux.de. Fixes the missing Headers Content-Type and Content-Length and makes it Camel-Case.

<?php
if( !function_exists('apache_request_headers') ) {
        function
apache_request_headers() {
               
$arh = array();
               
$rx_http = '/\AHTTP_/';
                foreach(
$_SERVER as $key => $val) {
                        if(
preg_match($rx_http, $key) ) {
                               
$arh_key = preg_replace($rx_http, '', $key);
                               
$rx_matches = array();
                               
// do some nasty string manipulations to restore the original letter case
                                // this should work in most cases
                               
$rx_matches = explode('_', strtolower($arh_key));
                                if(
count($rx_matches) > 0 and strlen($arh_key) > 2 ) {
                                        foreach(
$rx_matches as $ak_key => $ak_val) $rx_matches[$ak_key] = ucfirst($ak_val);
                                       
$arh_key = implode('-', $rx_matches);
                                }
                               
$arh[$arh_key] = $val;
                        }
                }
                if(isset(
$_SERVER['CONTENT_TYPE'])) $arh['Content-Type'] = $_SERVER['CONTENT_TYPE'];
                if(isset(
$_SERVER['CONTENT_LENGTH'])) $arh['Content-Length'] = $_SERVER['CONTENT_LENGTH'];
                return(
$arh );
        }
}
To Top