Position actuelle: Accueil> Derniers articles> Pourquoi la page vide apparaît-il lors de la redirection à l'aide de la fonction en-tête ()? Comment dépanner et résoudre ce problème?

Pourquoi la page vide apparaît-il lors de la redirection à l'aide de la fonction en-tête ()? Comment dépanner et résoudre ce problème?

M66 2025-07-28

Dans le développement de PHP, l'utilisation de la fonction d'en-tête () pour la redirection des pages est une pratique courante. Par exemple:

 header("Location: http://m66.net/anotherpage.php");
exit;

Le code ci-dessus redirigera l'utilisateur vers la page http://m66.net/anotherpage.php . Bien que la redirection soit une opération très simple et courante, vous rencontrerez parfois des pages vides, en particulier lorsque vous utilisez la fonction d'en-tête () . Cet article expliquera les raisons pour lesquelles la page est vide et fournira un certain dépannage et des solutions.

1. Y a-t-il une sortie avant la fonction d'en-tête () ?

La fonction d'en-tête () doit être appelée avant toute sortie HTML. Si le contenu HTML (tel que les espaces, les ruptures de ligne, les messages d'erreur, etc.) a été sorti avant d'appeler la fonction d'en-tête () , PHP lancera une erreur et la redirection ne prendra pas effet, ce qui peut éventuellement provoquer un blanc de la page.

Solution:

  • Assurez-vous que la fonction d'en-tête () n'a pas de sortie auparavant. Vous pouvez vérifier s'il y a des espaces, des pauses de ligne ou tout contenu HTML entre le début du fichier et l'appel d'en-tête () .

  • Il est préférable de ne pas avoir d'espaces ni de nouvelles lignes au début du fichier pour éviter une sortie inattendue. Vous pouvez vérifier si le fichier est codé correctement en regardant le bom (marqueur de commande d'octets) du fichier pour s'assurer qu'il ne contient pas de caractères d'espace supplémentaire.

Étapes de dépannage:

  1. Ouvrez le fichier PHP et confirmez qu'il n'y a pas de sortie avant la fonction d'en-tête () .

  2. Si nécessaire, utilisez ob_start () pour activer la mise en mémoire tampon de sortie pour éviter la sortie précoce.

 <?php
ob_start(); // Allumez la tampon de sortie
header("Location: http://m66.net/anotherpage.php");
exit;
ob_end_flush(); // Nettoyez le tampon de sortie et sortiz le contenu
?>

2. La fonction exit () est-elle appelée après en-tête () ?

La fonction en-tête () ne termine pas immédiatement l'exécution du script, et le script n'arrêtera l'exécution que lorsque la fonction exit () ou die () sera ensuite appelée. Par conséquent, si vous n'appelez pas exit () après avoir appelé en-tête () , PHP peut continuer à exécuter le code ultérieur, entraînant des erreurs en blanc ou dans la page.

Solution:

  • Appelez Exit () immédiatement après la fonction d'en-tête () pour s'assurer que le script termine l'exécution et qu'aucun autre contenu n'est sorti.

 header("Location: http://m66.net/anotherpage.php");
exit; // Assurez-vous que le script termine l&#39;exécution

3. Les informations d'en-tête ont-elles été envoyées?

Vous pouvez vérifier si les informations d'en-tête ont été envoyées via la fonction Header_Sent () . Si le navigateur a reçu les informations d'en-tête lorsque la fonction d'en-tête () est appelée, PHP ne pourra plus envoyer les informations d'en-tête, ce qui entraîne une défaillance de redirection.

Solution:

  • Avant d'appeler la fonction en-tête () , utilisez la fonction en tête_sent () pour vérifier si les informations d'en-tête ont été envoyées.

  • Si l'en-tête a été envoyé, ob_start () peut être utilisé pour tamponner la sortie.

 if (!headers_sent()) {
    header("Location: http://m66.net/anotherpage.php");
    exit;
} else {
    echo "Incapable de rediriger,Les informations d&#39;en-tête ont été envoyées";
}

4. Y a-t-il une erreur PHP, ce qui fait que la page est vide?

Les blancs de page peuvent être causés par des erreurs PHP. Par défaut, PHP peut ne pas afficher les messages d'erreur, mais à la place des pages vides directement. Vous pouvez vérifier s'il y a des problèmes potentiels en activant le rapport d'erreur.

Solution:

  • Pendant le développement, activez les rapports d'erreurs PHP pour détecter et corriger les erreurs potentielles.

 error_reporting(E_ALL);  // Allumez tous les rapports d&#39;erreur
ini_set('display_errors', 1);  // Afficher les erreurs sur la page

5. Le code d'état HTTP correct est-il utilisé pour la redirection?

Lors de la redirection à l'aide de la fonction d'en-tête () , assurez-vous que le code d'état HTTP correct est utilisé. Le code d'état de redirection par défaut est 302 (redirection temporaire). Si votre redirection est permanente, vous devez utiliser un code d'état 301.

 header("Location: http://m66.net/anotherpage.php", true, 301); // Redirection permanente
exit;

Résumer

Grâce aux étapes de dépannage ci-dessus, nous pouvons découvrir et résoudre le problème de la page vide lors de la redirection à l'aide de la fonction d'en-tête () . Les points d'inspection clés comprennent:

  • Assurez-vous qu'il n'y a pas de sortie avant l'appel d'en-tête () .

  • Appelez Exit () pour s'assurer que le script termine l'exécution.

  • Vérifiez si le message d'en-tête a été envoyé.

  • Allumez le rapport d'erreur pour voir s'il y a d'autres messages d'erreur.

Grâce à ces mesures, vous pouvez éviter le problème des blancs de la page et faire fonctionner correctement les redirections.

  • Étiquettes associées:

    header