Fonctions PHP header()Functions


PHP HTTP 参考手册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) :

<html>
<?php
// Cela entraîne une erreur.
// La sortie ci-dessus se trouve avant l'appel à header()
header('Location: http://www.example.com/');
?>

Syntaxe

header(string,replace,http_response_code)

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 :

<?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 :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) :

<?php
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.


PHP HTTP 参考手册Manuel de référence complet PHP HTTP Autres extensions