Dans la programmation PHP, nous rencontrons souvent des situations où la fonction d'en-tête () ne fonctionne pas. La fonction d'en-tête () est généralement utilisée pour envoyer des en-têtes HTTP bruts avant la sortie du script, tels que la définition du type de contenu de la page ou la redirection de l'utilisateur. Cependant, de nombreux développeurs peuvent rencontrer des échecs soudains lors de l'utilisation d'en-tête () , ce qui provoque une confusion. Alors, pourquoi la fonction d'en-tête () échoue-t-elle soudainement? Il est très probable que vous ignoriez ce problème caché (marquage de l'Ontte).
BOM (Commande d'octets Mark) est un marqueur spécial pour le codage Unicode qui indique l'ordre des fichiers texte d'octets. Habituellement, il contient des caractères invisibles au début du fichier. Bien que l'en-tête BOM n'ait aucun effet sur la lecture des fichiers texte normaux, il a un grand impact sur la fonction d'en-tête () de PHP.
Dans PHP, la fonction en-tête () doit être appelée avant toute sortie. En d'autres termes, il ne peut y avoir de sortie après l'appel en-tête () (y compris les balises HTML, les espaces, les pauses de ligne, etc.). L'en-tête BOM fait en fait partie du début du fichier, et il ajoute des octets invisibles à l'avant du fichier. Si votre fichier PHP est encodé UTF-8 et contient des en-têtes BOM, ces caractères invisibles seront envoyés au navigateur avant la sortie PHP, ce qui fait que la fonction d'en-tête () ne fonctionne pas correctement parce que l'en-tête de réponse HTTP a été partiellement envoyé.
Vérifiez l'en-tête de Bom <br> Vous pouvez utiliser un éditeur de texte (tel que Notepad ++ ou SUBLIME Text) pour ouvrir votre fichier PHP pour voir si l'en-tête Bom existe. Si le fichier est encodé UTF-8 et contient un en-tête BOM, l'éditeur de texte aura généralement un logo pertinent.
Retirez l'en-tête bom <br> Si vous constatez que le fichier contient un en-tête Bom, vous pouvez le supprimer de la manière suivante:
Dans Notepad ++ , après avoir ouvert le fichier, cliquez sur le menu Encoding et sélectionnez UTF-8 sans bom .
Dans le texte sublime , enregistrez sous le format UTF-8 (pas de bom) en utilisant l'option Encodage avec le codage .
Comment gérer PHP <br> Si vous ne pouvez pas modifier directement le codage du fichier ou que l'outil d'édition ne le prend pas en charge, vous pouvez également utiliser le code suivant en PHP pour effacer l'en-tête BOM:
<?php
// Ajouter ce code en haut du fichier
if (substr(utf8_decode(file_get_contents('yourfile.php')), 0, 3) == "\xEF\xBB\xBF") {
file_put_contents('yourfile.php', substr(file_get_contents('yourfile.php'), 3));
}
?>
Cela vous permet de vérifier si le fichier a un en-tête BOM et le supprimer lorsque le fichier est chargé.
Erreur Code PHP:
<?php
// BOM La tête provoque header() invalide
header("Location: https://m66.net");
exit;
?>
Si ce fichier PHP contient des en-têtes BOM, la fonction d'en-tête () ne fonctionnera pas correctement et le navigateur recevra une réponse qui a déjà commencé, entraînant l'incapacité de rediriger.
Solution:
Retirez l'en-tête BOM ou assurez-vous que la fonction d'en-tête () est appelée avant toute sortie:
<?php
// supprimer BOM Après la tête
header("Location: https://m66.net");
exit;
?>
Lors du développement de programmes PHP, l'une des raisons courantes pour lesquelles la fonction d'en-tête () échoue est que le fichier contient un en-tête BOM. Bien que les en-têtes BOM ne soient généralement pas facilement découverts, ils interfèrent avec la fonction d'en-tête () . Pour éviter cela, les développeurs peuvent s'assurer que le fichier PHP enregistré ne contient pas d'en-têtes BOM et faire attention au choix d'un format de codage UTF-8 sans nomenclature lors de l'encodage du fichier.
Si vous rencontrez des problèmes similaires, la vérification de l'encodage du fichier et la garantie qu'il n'y a pas d'en-tête BOM est un moyen efficace de résoudre le problème.