downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

apache_reset_timeout> <apache_note
Last updated: Fri, 14 Aug 2009

view this page in

apache_request_headers

(PHP 4 >= 4.3.0, PHP 5)

apache_request_headersRécupère tous les en-têtes HTTP de la requête

Description

array apache_request_headers ( void )

Récupère tous les en-têtes HTTP de la requête courante.

Cette fonction n'est supportée que si PHP est installé en tant que module d'Apache.

Valeurs de retour

Un tableau associatif avec tous les en-têtes HTTP de la requête courante ou FALSE en cas d'échec.

Historique

Version Description
4.3.3

Note: Depuis PHP 4.3.3, vous pouvez utiliser cette fonction avec le module NSAPI des serveurs Netscape/iPlanet/SunONE.

4.3.0 Avant PHP 4.3.0, apache_request_headers() s'appelait getallheaders(). Depuis PHP 4.3.0, getallheaders() est un alias de la fonction apache_request_headers().

Exemples

Exemple #1 Exemple avec apache_request_headers()

<?php
$headers 
apache_request_headers();

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

L'exemple ci-dessus va afficher quelque chose de similaire à :

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

Notes

Note: Vous pouvez aussi obtenir les valeurs des variables CGI communes en les lisant dans l'environnement, ce qui fonctionne, que vous soyez ou non en module Apache. Utilisez la fonction phpinfo() pour connaître la liste des variables d'environnement disponibles.

Voir aussi



apache_reset_timeout> <apache_note
Last updated: Fri, 14 Aug 2009
 
add a note add a note User Contributed Notes
apache_request_headers
callum85 at notspam dot msn dot com
19-Apr-2007 06:07
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.
jrabbit
21-Jan-2007 01:04
The following code will implement an approximation of apache_request_headers for lighttpd making most scripts that use the function portable between the two platforms.

Caveats are:

1. This function will convert any _ in a header key to a -

2. This function will capitalize the first character and first character after each hyphen in each header key and lower case the rest of the key.

This does not cause a problem with standard headers which are capitalized in this manner but may cause custom headers to appear in a different case to apache.

<?php
if (!function_exists('apache_request_headers')) {
    eval(
'
        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;
                }
            }
            return $out;
        }
    '
);
}
?>
limalopex.eisfux.de
29-Oct-2006 05:01
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 );
}
///
}
///
?>

apache_reset_timeout> <apache_note
Last updated: Fri, 14 Aug 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites