(PHP 4, PHP 5)
headers_sent — Indique si les en-têtes HTTP ont déjà été envoyés
headers_sent() retourne TRUE si les en-têtes HTTP ont déjà été envoyés, et FALSE sinon. Si les paramètres optionnels file et line sont fournis, headers_sent() va placer le nom du fichier source et le numéro de ligne qui ont débuté l'affichage, dans les variables file et line .
Vous ne pouvez plus envoyer d'en-têtes avec la fonction header() une fois que le bloc d'en-tête a été fermé. En utilisant cette fonction, vous pouvez au moins éviter de voir s'afficher les erreurs HTTP reliées. Une autre option consiste à utiliser le contrôle de sortie .
Note: Les paramètres optionnels file et line ont été ajoutés en PHP 4.3.0.
Exemple 1760. Exemple avec headers_sent()
<?php
// Si aucun en-tête n'a été envoyé, envoyons-en un
if (!
headers_sent
()) {
header
(
'Location: http://www.example.com/'
);
exit;
}
// Voici un exemple d'utilisation des paramètres optionnels de fichier et de ligne
// disponibles depuis PHP 4.3.0. Notez que $filename et $linenum sont
// transmis pour utilisation ultérieure. Ne les assignez pas avant de les utiliser.
if (!
headers_sent
(
$filename
,
$linenum
)) {
header
(
'Location: http://www.example.com/'
);
exit;
// Vous allez probablement déclencher une erreur ici
} else {
echo
"Les en-têtes ont déjà été envoyés, depuis le fichier $filename à la ligne $linenum\n"
.
"Il est donc impossible de vous rediriger automatiquement, aussi veuillez
cliquez <a href=\"http://www.example.com\">ici</a>.\n"
;
exit;
}
?>
Voir aussi ob_start() , trigger_error() et header() pour plus de détails sur les tenants et aboutissants.