La fonction header() envoie des en-têtes HTTP bruts au client.
Il est important de réaliser que la fonction header() doit être appelée avant qu'une sortie réelle ne soit envoyée (en PHP 4 et versions ultérieures, vous pouvez utiliser la mise en mémoire tampon de sortie pour résoudre ce problème) :
<html><?php// Cela entraîne une erreur.// La sortie ci-dessus se trouve avant le header() callheader('Location: http://www.example.com/');?>
en-tête (chaîne, remplacer, http_response_code)
paramètre | décrire |
---|---|
chaîne | Requis. Spécifie la chaîne d'en-tête à envoyer. |
remplacer | Facultatif. Indique si cet en-tête remplace l'en-tête précédent ou ajoute un deuxième en-tête. La valeur par défaut est TRUE (remplacement). FALSE (autoriser 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) |
Remarque : Depuis PHP 4.4, cette fonction empêche l'envoi de plusieurs en-têtes en même temps. Il s'agit d'une mesure de protection contre les attaques par injection d'en-tête.
Désactivez la mise en cache des pages :
<?php// Date au passéheader("Expire : lundi 26 juillet 1997 05:00:00 GMT");header("Cache-Control: no-cache");header("Pragma: no-cache") ;?><html><corps>......
Remarque : Il existe des options que les utilisateurs peuvent définir pour modifier les paramètres de cache par défaut de leur navigateur. En envoyant l'en-tête ci-dessus, vous pouvez remplacer n'importe lequel de ces paramètres et forcer le navigateur à ne pas mettre en cache !
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 une boîte de dialogue d'enregistrement) :
<?phpheader("Content-type:application/pdf");// Il s'appellera download.pdfheader("Content-Disposition:attachment;filename='downloaded.pdf'");// La source PDF est dans l'original .pdfreadfile("original.pdf");?><html><corps>......
Remarque : Microsoft IE 5.5 présente un bug qui empêche le mécanisme ci-dessus. Ce bogue peut être résolu en effectuant une mise à niveau vers le Service Pack 2 ou supérieur.