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.

War es hilfreich?

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'

?>

Ausgabepufferung Funktionen

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top