Wie zuvor wiederholte Elemente in PHP löschen
Frage
In PHP ist es eine Möglichkeit, löschen / entfernen Sie alle vorher Artikel Echo oder gedruckt?
Zum Beispiel:
<?php
echo 'a';
print 'b';
// some statement that removes all printed/echoed items
echo 'c';
// the final output should be equal to 'c', not 'abc'
?>
Ihr Skript verwendet die Funktion enthält. Die enthaltenen Dateien sollen nichts Echo. Nur für den Fall jemand (ex = Hacker) versucht, ich brauche eine Art und Weise zu entfernen.
Lösung
<?php
ob_start();
echo 'a';
print 'b';
// some statement that removes all printed/echoed items
ob_end_clean();
echo 'c';
// the final output is equal to 'c', not 'abc'
?>
Die Pufferausgabefunktionen sind auch in hackery nützliche Funktionen zu zwingen, die nur Zeichenfolgen zurück drucken, dh.
<?php
ob_start();
var_dump($myVar);
$data = ob_get_clean();
// do whatever with $data
?>
Andere Tipps
während @monoxide richtig ist, ist es besser zu finden intuitivere Möglichkeiten, das gleiche zu tun. z.
<?php
$val_to_print = $a;
if( $need_to_change==true )
$val_to_print = $b;
// when you are sure you won't have to change again...
echo $val_to_print;
?>
Cheers,
JRH
Im Idealfall sollten Sie keine Ausgabe erhalten haben, die Sie nicht letztlich gedruckt werden sollen. Halten Sie Ihre Logik getrennt von Ihrer Präsentation für weniger Frust.
Dass gesagt wird, können Sie die Output Buffering Optionen innerhalb PHP.
Wenn es Debug-Ausgabe und Programmstatus Informationen, die Sie sich Sorgen um vielleicht trigger_error näher sein kann, was Sie brauchen, wie zum Beispiel:
trigger_error ("Attempting to load report #{$report_id}.", E_USER_NOTICE);
Wenn Sie Ihr Skript in der Produktion ist es Fehler auftauchen werde nicht wie allgemein sie deaktiviert oder angemeldet sind. Es ist auch mit E_USER_ERROR besten auf diese Weise fatale Fehler zu tun, anstatt die ().
ob_start ();
require ($filename);
$html = ob_get_clean ();
Das oben wird auch eine Datei aus und geben Sie den Inhalt als String zurück.
Caveat:. Den Puffer Notwasserung werden auch alle Fehlermeldungen Graben geworfen, Debugging machen (potentiell) einen Alptraum
Wenn ein Hacker hat sagt sich Zugriff auf Ihre PHP-Datei, so wird er auch in der Lage sein, die Anweisung zum Entfernen des Ausgabepuffer zu löschen.
Wenn Sie dies tun, weil Sie lassen Sie Ihre Benutzer PHP-Skripte laden, lassen Sie mich Ihnen sagen, dass dies eine extrem schlechte Idee.
In beiden Fällen zu tun, was Sie fordern fügt 0 Sicherheit.