Fonction header() PHP

Définition et utilisation

La fonction header() envoie aux clients les en-têtes HTTP originaux.

Il est important de noter que la fonction header() doit être appelée avant l'envoi de toute sortie réelle (dans PHP 4 et versions ultérieures, vous pouvez utiliser le cache de sortie pour résoudre ce problème) :

<html>
<?php
// Erreur de résultat
// Sortie existante avant l'appel header()
header('Location: http://www.example.com/');
?>

Syntaxe

header(string,replace,http_response_code)
Paramètres Description
string Obligatoire. Définit la chaîne d'en-tête à envoyer.
replace

Optionnel. Indique si l'en-tête doit remplacer l'en-tête précédent ou ajouter un deuxième en-tête.

Par défaut, c'est true (remplacement). false (autoriser plusieurs en-têtes du même type).

http_response_code Optionnel. Forcez le code de réponse HTTP à la valeur spécifiée. (Disponible dans PHP 4 et versions supérieures)

Avis et commentaires

Remarque :Depuis PHP 4.4, cette fonction empêche l'envoi de plusieurs en-têtes en une seule fois. C'est une mesure de protection contre les attaques d'injection de têtes.

Exemple

Exemple 1

<?php
// Date dans le passé
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");

?>
<html>
<body>
...
...

Remarque :L'utilisateur peut configurer certaines options pour modifier les paramètres de cache par défaut du navigateur. En envoyant les en-têtes ci-dessus, vous pouvez couvrir tous ces paramètres et forcer le navigateur à ne pas effectuer de cache !

Exemple 2

Indiquez à l'utilisateur de sauvegarder un fichier PDF généré (l'en-tête Content-Disposition est utilisé pour fournir un nom de fichier recommandé et pour forcer le navigateur à afficher une boîte de dialogue de sauvegarde) :

<?php
header("Content-type:application/pdf");
// Le fichier sera appelé downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");
// Le fichier source PDF est dans original.pdf
readfile("original.pdf");
?>
<html>
<body>
...
...

Remarque :Internet Explorer 5.5 de Microsoft contient un bug qui empêche ce mécanisme. Vous pouvez résoudre ce bug en mettant à jour le Service Pack 2 ou une version supérieure.