headers_sent

(PHP 3>= 3.0.8, PHP 4 )

headers_sent --  Indique si les en-têtes HTTP ont déjà été envoyés

Description

bool headers_sent ( [string &file [, int &line]])

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 est d'utilise le contrôle de sortie.

Nouveaux paramètres : Les paramètres optionnels file et line ont été ajouté en PHP 4.3.0.

Exemple 1. Exemple avec headers_sent()

<?php

// Si aucun en-t&ecirc;te n'a &eacute;t&eacute; envoy&eacute;, envoyons en un
if (!headers_sent()) {
    
header ('Location: http://www.nexen.net/');
    exit;
}
  
// Voici un exemple d'utilisation des param&egrave;tres optionnels de fichier et de ligne
// disponibles depuis PHP 4.3.0. Notez que $filename et $linenum sont
// transmis pour utilisation ult&eacute;rieure. Ne les assignez pas avant de les utiliser.
if (!headers_sent($filename, $linenum)) {
    
header ('Location: http://www.nexen.net/');
    exit;

// Vous allez probablement d&eacute;clencher une erreur ici
} else {

    print
"Les en-t&ecirc;tes ont d&eacute;j&agrave; &eacute;t&eacute; envoy&eacute;s, depuis le fichier $filename &agrave; la ligne $linenum\n" .
          
"Il est donc impssible de vous rediriger automatiquement, aussi veuillez
          cliquez <a href=\"http://www.nexen.net\">ici</a>.\n"
;
    exit;
}

?>

Voir aussi ob_start(), trigger_error() et header() pour plus de détails sur les tenants et aboutissants.