Aktueller Standort: Startseite> Neueste Artikel> Was sind die Best Practices für die Verwendung von Headers_Sent -Funktionen in Verbindung mit der Header -Funktion?

Was sind die Best Practices für die Verwendung von Headers_Sent -Funktionen in Verbindung mit der Header -Funktion?

gitbox 2025-08-19
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Teil des Codes hat nichts mit dem Inhalt des Artikels zu tun,Demonstrieren Sie den Block vor dem Code</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-variable">$now</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Aktuelle Zeit:<span class="hljs-subst">$now</span></span></span><span>\n";
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

existierenPHPWährend der Entwicklung,arbeitenHTTPReaktionsüberschriften sind sehr häufige Anforderungen。`</span><span><span class="hljs-title function_ invoke__">header</span></span><span>()`Funktionen ermöglichen es uns, das Original zu sendenHTTPHeaderinformationen,Und`</span><span><span class="hljs-title function_ invoke__">headers_sent</span></span><span>()`函数则可以检测Headerinformationen是否已经发送。Diese beiden Funktionen vernünftig kombinieren,能够有效避免因重复发送Headerinformationen导致的错误,从Und提升程序的健壮性和用户体验。

</span><span><span class="hljs-comment">## 1. `header()`Funktion Einführung</span></span><span>

`</span><span><span class="hljs-title function_ invoke__">header</span></span><span>()`Wird verwendet, um Original zu sendenHTTPKopf。Zum Beispiel,Sprung setzen、Geben Sie den Inhaltstyp an、Steuercache usw.:

```php
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: http://example.com'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: application/json'</span></span><span>);
</span></span>

Wenn der HTTP -Header jedoch gesendet wurde (z. B. einige HTML- oder Whitespace -Zeichen ausgegeben wurden), löst das Aufrufen von Header () einen Fehler aus "Die bereits gesendeten Header -Headers -Headers -Headers können nicht geändert werden.

2. Die Funktion der Funktion Header_Sent ()

Header_Sent () wird verwendet, um festzustellen, ob der HTTP -Header an den Client gesendet wurde. Seine typische Verwendung:

 <span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">headers_sent</span></span><span>()) {
    </span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: http://example.com'</span></span><span>);
    </span><span><span class="hljs-keyword">exit</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Headers already sent, cannot redirect.'</span></span><span>;
}
</span></span>

Dies kann vermeiden, dass das Anrufen von Header () nach dem Versenden der Header -Informationen zu Programmenausnahmen gesendet wurde.

3.. Best Practices für die kombinierte Verwendung

  • Rufen Sie Header () im Voraus an, um zu vermeiden, etwas auszugeben
    Sobald PHP den Inhalt ausgibt, wird der HTTP -Header automatisch gesendet. Stellen Sie daher sicher, dass Header () keine Echo-, Druck- oder HTML -Ausgabe hat, bevor er aufgerufen wird.

  • Verwenden Sie Headers_Sent () zur Erkennung, um wiederholtes Senden von Headerinformationen <br> zu verhindern In komplexen Programmen oder Vorlagensystemen kann es schwierig sein, die Ausgangsreihenfolge vollständig zu steuern, und es ist besonders wichtig, Header_Sent () zu überprüfen.

  • Nehmen Sie eine Alternative, wenn Sie feststellen, dass der Header <br> gesendet wurde Verwenden Sie beispielsweise JavaScript, um manuelle Links zu springen oder bereitzustellen, um Programmabstürze zu vermeiden.

  • Verwenden Sie mit Ausgang oder Sterben <br> Nach dem Versenden einer Weiterleitung sollte das Skript sofort beendet werden, um die nachfolgende Codeausführung zu verhindern.

4. Beispielcode

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Angenommen, etwas könnte irgendwo ausgegeben worden sein</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Willkommen zu Besuch!"</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">headers_sent</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-variable">$line</span></span><span>)) {
    </span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: http://example.com'</span></span><span>);
    </span><span><span class="hljs-keyword">exit</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;script&gt;window.location.href='http://example.com';&lt;/script&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;p&gt;Seitensprung fehlgeschlagen,Bitte klicken Sie &lt;a href='http://example.com'&gt;Hier&lt;/a&gt;。&lt;/p&gt;"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Headers already sent in <span class="hljs-subst">$file</span></span></span><span> on line </span><span><span class="hljs-subst">$line</span></span><span>.");
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

5. Zusammenfassung

Die Kombination von Header () und Header_Sent () kann die Sicherheit und Flexibilität von HTTP -Headeroperationen erheblich verbessern. Insbesondere in großen Projekten oder Frameworks kann dieser Erkennungsmechanismus tödliche Fehler vermeiden, die durch Fehler in der Ausgabereihenfolge verursacht werden, wodurch der Code robuster und leichter zu warten ist. Die Entwicklung guter Ausgangsregelungsgewohnheiten und das Bewusstsein für die Verwendung der Kopferkennung ist eine wichtige Best -Practice in der PHP -Entwicklung.

 <span></span>