Position actuelle: Accueil> Derniers articles> Utilisez des en-têtes_sent () pour vérifier si l'en-tête peut être réglé

Utilisez des en-têtes_sent () pour vérifier si l'en-tête peut être réglé

M66 2025-05-17

Dans PHP, la fonction d'en-tête () est utilisée pour envoyer des informations d'en-tête HTTP d'origine, telles que la redirection, la définition de cookies, la modification des types de contenu, etc. Cependant, les informations d'en-tête HTTP doivent être envoyées avant toute sortie réelle (telle que HTML, écho, imprimé, etc.) ou une erreur sera lancée. En effet, une fois la sortie démontr, PHP enverra automatiquement l'en-tête HTTP.

Pour éviter les erreurs lors de l'appel d'en-tête () , nous pouvons utiliser la fonction en tête_sent () pour détecter si l'en-tête a été envoyé.

Qu'est-ce que les Headers_Sent () ?

Headers_Sent () est une fonction intégrée fournie par PHP pour vérifier si des informations d'en-tête HTTP ont été envoyées au navigateur. Son utilisation de base est la suivante:

 if (!headers_sent()) {
    header('Location: https://m66.net/some-page');
    exit;
}

Si l'en-tête n'a pas encore été envoyé, Headers_Sent () retourne faux , indiquant que l'en-tête () peut être appelé en toute sécurité; Si cela est vrai , cela signifie que l'en-tête a été envoyé et une erreur sera signalée lors de l'appel de l'en-tête () .

Vérifiez l'emplacement d'envoi spécifique

headers_sent () peut également accepter deux paramètres pour obtenir la position (fichier et numéro de ligne) de la sortie d'en-tête:

 if (headers_sent($file, $line)) {
    echo "HTTP La tête est déjà là $file Le premier du document $line Envoi de ligne。";
} else {
    header('Location: https://m66.net/some-other-page');
    exit;
}

Cette méthode convient particulièrement au débogage et vous aide à trouver l'emplacement du code à sortir à l'avance.

Scènes communes

1 ?? Redirection de la page

Avant de faire une redirection, vous devez vous assurer qu'il n'y a pas de sortie:

 if (!headers_sent()) {
    header('Location: https://m66.net/login');
    exit;
} else {
    echo "Incapable de rediriger,Parce qu'il y a déjà une sortie。";
}

2 ?? Définir les cookies

De même, Setcookie () s'appuie sur des en-têtes HTTP, alors vérifiez-le également:

 if (!headers_sent()) {
    setcookie('user', 'JohnDoe', time() + 3600, '/');
} else {
    echo "Impossible de régler cookie,Parce que l'en-tête a été envoyé。";
}

Conseils: activer la mise en mémoire tampon de sortie

Si vous rencontrez souvent des erreurs d'enregistrement d'en-tête, envisagez d'activer la tampon de sortie au début du script:

 ob_start();

De cette façon, toutes les sorties entreront d'abord dans le tampon, plutôt que de l'envoyer au navigateur immédiatement jusqu'à ce que le script soit terminé ou que l'OB_END_FLUSH () soit appelé, vous donnant plus de temps pour envoyer des informations d'en-tête en toute sécurité.