Le langage PHP
Les  en-têtes HTTP

Les en-têtes HTTP

Lors de chaque échange par le protocole HTTP entre votre navigateur et le serveur, des données dîtes d'en-têtes contenant des informations sur les données à envoyer (dans le cas d'une requête) ou envoyées (dans le cas d'une réponse) sont crées. Les informations en question, généralement sur une page Web ou une image, suivent ces en-têtes. Les en-têtes HTTP permettent aussi d'effectuer des actions sur le navigateur comme le transfert de cookies ou bien une redirection vers une autre page.

Ces en-têtes sont les premières informations envoyées au navigateur (pour une réponse) ou au serveur (dans le cas d'une requête), elles se présentent sous la forme :

en-tête: valeur

La syntaxe doit être rigoureusement respectée, c'est-à-dire qu'aucun espace ne doit figurer entre le nom de l'en-tête et les deux points (:). Un espace doit par contre figurer après celui-ci  !

PHP fournit une fonction permettant d'envoyer très simplement des en-têtes HTTP manuellement du serveur au navigateur (il s'agit alors d'une réponse HTTP).

La syntaxe de cette fonction est la suivante :

header(chaîne en-tête HTTP)

Etant donnée que les en-têtes HTTP sont les premières informations envoyées, la fonction header() doit être utilisée avant tout envoi de données Html au navigateur (le script qui la contient doit donc être placé avant la balise <html> et avant toute fonction echo(),print ou printf()).


La fonction header() sera utilisée, par exemple, pour rediriger le navigateur vers une nouvelle page :

<?php
header("location: http://www.lehtml.com/php/index.php");
?>


 

Récupérer les en-têtes de la requête

Alors que la fonction header() permet d'envoyer des en-têtes HTTP au navigateur, PHP fournit une seconde fonction permettant de récupérer dans un tableau l'ensemble des en-têtes HTTP envoyées par le navigateur. Voici la syntaxe de cette fonction :

Tableau getallheaders();

Le tableau retourné par la fonction contient les en-têtes indexés par leur nom. Voici un script permettant par exemple de récupérer des en-têtes particuliers.

<?php
$entetes = getallheaders;
echo $entetes["location"];
?>