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.