<h1>Header</h1>
<?php
echo 'teste'; // output here
echo headers_sent(); // no output here!
?>
Warum wird headers_sent() in diesem Fall nicht ausgegeben? Ich danke Ihnen.
<h1>Header</h1>
<?php
echo 'teste'; // output here
echo headers_sent(); // no output here!
?>
Warum wird headers_sent() in diesem Fall nicht ausgegeben? Ich danke Ihnen.
Schauen Sie in Ihre php.ini-Konfigurationsdatei und suchen Sie nach einer Zeile mit output_buffering
und stellen Sie sicher, dass es so aussieht:
output_buffering = Off
Wenn Sie sie ausgeschaltet haben, dann echo headers_sent()
sollte ausgeben 1
Wenn Sie es eingeschaltet haben, dann echo headers_sent()
wird nichts ausgeben, weil headers_sent() in diesem Fall FALSE zurückgibt, weil Header (also nicht HTML <h1>
aber HTTP-Antwort-Header) wurden noch nicht gesendet, da die Ausgabe gepuffert wird.
Um das Senden der Kopfzeilen und der bisherigen Ausgabe zu erzwingen, können Sie flush()
Weil sie true oder false zurückgibt.
var_dump(headers_sent());
Sollte angezeigt werden (das eine oder das andere unten)
bool(true)
bool(false)
Es funktioniert, es wird nur kein Text ausgegeben, wenn sie falsch ist , da es sich nicht um Text handelt es ist ein boolean
Wert. Die allgemeine Verwendung dieser Funktion ist für eine if-Anweisung gedacht, nicht für eine anzeigende Anweisung; wenn Sie sie anzeigen möchten, verwenden Sie einfach die ternary operator
echo (headers_sent())?'true':'false';
Editar
Danke an Victor für die Korrektur: Bei true wird 1 zurückgegeben, bei false eine leere Zeichenkette.
Update
Warum ist headers_sent()
return false? Nun, um zu klären, werde ich aus dem Handbuch posten:
headers_sent - Prüft, ob oder wo Kopfzeilen gesendet worden sind
Wenn Sie eine Ausgabe haben, werden die Kopfzeilen automatisch an den Browser gesendet und der Textkörper beginnt. Zum Beispiel:
<?php
echo "test";
echo headers_sent(); // should yield 1
?>
Das sollte 1 anzeigen, da wir eine echo-Anweisung für die headers_sent
anrufen.
<?php
echo headers_sent(); // should yield empty string
?>
Dadurch wird eine leere Zeichenkette angezeigt, da vor dem Aufruf von headers_sent() keine Ausgabe erfolgt. Die obige setzt voraus. dass output_buffering ausgeschaltet ist. Wie bei output_buffering
Wenn diese Option aktiviert ist, werden alle Ausgaben gespeichert, bis das Skript mit der Verarbeitung fertig ist, und dann angezeigt, so dass der Header / Body-Tag am Ende des Skripts gesendet wird.
Ich hoffe, das klärt die Sache auf. Wenn nicht, sehen Sie sich den Link zum Handbuch an, den ich oben gepostet habe, und lesen Sie die Beispiele im Handbuch durch.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.