Aktueller Standort: Startseite> Neueste Artikel> Ignorieren Sie das versteckte Problem des Header () -ausfalls durch BOM -Header

Ignorieren Sie das versteckte Problem des Header () -ausfalls durch BOM -Header

M66 2025-05-28

In der PHP -Programmierung begegnen wir häufig Situationen, in denen die Header () -Funktion nicht funktioniert. Die Funktion Header () wird normalerweise zum Senden von RAW -HTTP -Headern vor der Skriptausgabe verwendet, z. B. das Einstellen des Inhaltstyps der Seite oder zur Umleitung des Benutzers. Viele Entwickler können jedoch bei der Verwendung von Header () auf plötzliche Fehler stoßen, was zu Verwirrung führt. Warum scheitert die Funktion der Header () plötzlich? Es ist sehr wahrscheinlich, dass Sie dieses versteckte Problem ignorieren (Byte Order Marking).

Was ist ein Bom -Header?

BOM (Byte Order Mark) ist eine spezielle Markierung für die Unicode -Codierung, die die Byte -Reihenfolge von Textdateien angibt. Normalerweise enthält es einige unsichtbare Zeichen am Anfang der Datei. Obwohl der BOM -Header keinen Einfluss auf das Lesen normaler Textdateien hat, hat er einen großen Einfluss auf die Header () -Funktion von PHP.

In PHP muss die Header () -Funktion vor einer Ausgabe aufgerufen werden. Mit anderen Worten, es kann nach dem Aufrufen von Header () keine Ausgabe geben (einschließlich HTML -Tags, Leerzeichen, Linienbrüche usw.). Der BOM -Header ist tatsächlich Teil des Beginns der Datei und fügt unsichtbare Bytes zur Vorderseite der Datei hinzu. Wenn Ihre PHP-Datei UTF-8 codiert ist und BOM-Header enthält, werden diese unsichtbaren Zeichen vor der PHP-Ausgabe an den Browser gesendet, wodurch die Funktion Header () nicht ordnungsgemäß funktioniert, da der HTTP-Antwortkopf teilweise gesendet wurde.

Wie überprüfe und entfernen Sie BOM -Header?

  1. Überprüfen Sie den Bom -Header <br> Sie können einen Texteditor (z. B. Notepad ++ oder Sublime Text) verwenden, um Ihre PHP -Datei zu öffnen, um festzustellen, ob der BOM -Header vorhanden ist. Wenn die Datei UTF-8 codiert ist und einen BOM-Header enthält, verfügt der Texteditor normalerweise über ein relevantes Logo.

  2. BOM -Header entfernen <br> Wenn Sie feststellen, dass die Datei einen Bom -Header enthält, können Sie sie auf folgende Weise entfernen:

    • Klicken Sie in Notepad ++ nach dem Öffnen der Datei auf das Menü Coding und wählen Sie UTF-8 ohne BOM .

    • In Sublime Text speichern Sie als UTF-8- Format (keine BOM) mithilfe der Speichern-Codierungsoption .

  3. Wie man mit PHP <br> umgeht Wenn Sie die Codierung der Datei nicht direkt ändern können oder das Bearbeitungstool sie nicht unterstützt, können Sie auch den folgenden Code in PHP verwenden, um den BOM -Header zu löschen:

     <?php
    // Fügen Sie diesen Code oben in der Datei hinzu
    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));
    }
    ?>
    

    Auf diese Weise können Sie überprüfen, ob die Datei einen BOM -Header hat, und sie zu entfernen, wenn die Datei geladen wird.

Häufige Fehlerbeispiele

  1. Fehler -PHP -Code:

     <?php
    // BOM Der Kopf verursacht header() ungültig
    header("Location: https://m66.net");
    exit;
    ?>
    

    Wenn diese PHP -Datei BOM -Header enthält, funktioniert die Header () -Funktion nicht ordnungsgemäß, und der Browser erhält eine bereits begonnene Antwort, was dazu führt, dass die Unfähigkeit zur Umleitung führt.

  2. Lösung:
    Entfernen Sie den BOM -Header oder stellen Sie sicher, dass die Funktion der Header () vor einer Ausgabe aufgerufen wird:

     <?php
    // löschen BOM Nach dem Kopf
    header("Location: https://m66.net");
    exit;
    ?>
    

Zusammenfassen

Bei der Entwicklung von PHP -Programmen ist einer der häufigsten Gründe, warum die Header () -Funktion fehlschlägt, dass die Datei einen BOM -Header enthält. Obwohl BOM -Header normalerweise nicht leicht zu entdecken sind, stören sie die Header () -Funktion. Um dies zu vermeiden, können Entwickler sicherstellen, dass die gespeicherte PHP-Datei keine BOM-Header enthält, und auf die Auswahl eines bom-freien UTF-8-Codierungsformats bei der Codierung der Datei achten.

Wenn Sie auf ähnliche Probleme stoßen, ist es eine effektive Möglichkeit, das Problem zu lösen, um die Dateicodierung zu überprüfen und sicherzustellen, dass kein BOM -Header effektiv ist.