Fonctions PHP header()Functions
Manuel de référence complet PHP HTTP
Définition et utilisation
La fonction header() envoie un en-tête HTTP brut au client.
Il est important de comprendre que la fonction header() doit être appelée avant que toute sortie réelle ne soit envoyée (en PHP 4 et supérieur, vous pouvez utiliser la mise en mémoire tampon de sortie pour résoudre ce problème) :
<?php
// Cela entraîne une erreur.
// La sortie ci-dessus se trouve avant l'appel à header()
header('Location: http://www.example.com/');
?>
Syntaxe
| Parameters | Description |
|---|---|
| string | Obligatoire. Spécifie la chaîne d'en-tête à envoyer. |
| remplacement | Facultatif. Indique si l'en-tête doit remplacer un en-tête précédent ou ajouter un second en-tête. La valeur par défaut est TRUE (remplacer). FALSE (autorise plusieurs en-têtes du même type). |
| http_response_code | Facultatif. Force le code de réponse HTTP à la valeur spécifiée. (Disponible en PHP 4.3 et supérieur) |
Conseils et notes
Remarque :À partir de PHP 4.4, cette fonction empêche l'envoi de plusieurs en-têtes à la fois. Il s'agit d'une protection contre les attaques par injection d'en-têtes.
Exemple 1
Désactiver la mise en cache de la page :
// 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 :Les utilisateurs peuvent définir des options qui modifient les paramètres de mise en cache par défaut du navigateur. En envoyant les en-têtes ci-dessus, vous pouvez remplacer n’importe lequel de ces paramètres et forcer le navigateur à ne pas mettre en cache !
Exemple 2
Inviter l'utilisateur à enregistrer un fichier PDF généré (l'en-tête Content-Disposition est utilisé pour fournir un nom de fichier recommandé et forcer le navigateur à afficher la boîte de dialogue d'enregistrement) :
header("Content-type:application/pdf");
// Il sera appelé downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");
// La source PDF se trouve dans original.pdf
readfile("original.pdf");
?>
<html>
<body>
...
...
Remarque :Microsoft IE 5.5 a un bug qui empêche le mécanisme ci-dessus. La mise à niveau vers le Service Pack 2 ou supérieur peut corriger ce bug.
Manuel de référence complet PHP HTTP Autres extensions