Domanda

In php, esiste un modo per cancellare/rimuovere tutti gli elementi precedentemente echeggiati o stampati?

Per esempio:

<?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'

?>

Il mio script utilizza la funzione include.I file inclusi non dovrebbero riprodurre nulla.Nel caso in cui qualcuno (ex = hacker) ci provi, ho bisogno di un modo per rimuoverlo.

È stato utile?

Soluzione

<?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'

?>

funzioni output buffering

Le funzioni di uscita di buffering sono utili anche in aggiustamenti di costringere le funzioni che stampano solo per tornare stringhe, vale a dire.

<?php
ob_start();
var_dump($myVar);
$data = ob_get_clean();
// do whatever with $data
?>

Altri suggerimenti

mentre @monoxide è giusto, è meglio trovare il modo più intuitivo di fare lo stesso. per esempio:.

<?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;
?>

Saluti,

JRH

Idealmente, non si dovrebbe uscita tutto ciò che in ultima analisi, non si desidera stampare. Tenere la logica separata dalla presentazione per meno frustrazione.

Detto questo, puoi consultare le output buffering opzioni all'interno di PHP.

Se sei preoccupato dell'output di debug e delle informazioni sullo stato del programma, forse trigger_error potrebbe essere più vicino a ciò di cui hai bisogno, ad esempio:

trigger_error ("Attempting to load report #{$report_id}.", E_USER_NOTICE);

Quando il tuo script è in produzione non mostrerà alcun errore poiché generalmente sono disabilitati o registrati.È anche meglio eseguire errori fatali in questo modo con E_USER_ERROR anziché utilizzare die ().

ob_start ();
require ($filename);
$html = ob_get_clean ();

Quanto sopra includerà anche un file e ti fornirà il suo contenuto come una stringa.

Avvertimento:Eliminare il buffer eliminerà anche eventuali messaggi di errore generati, rendendo il debug (potenzialmente) un incubo.

Se un hacker diciamo accesso ha al file PHP, sarà anche in grado di rimuovere l'istruzione cancellare la memoria di uscita.

Se si sta facendo questo perché si sta lasciando gli utenti caricano script PHP, lasciate che vi dica che questa è una pessima idea.

In entrambi i casi, a fare quello che stai chiedendo aggiunge 0 la sicurezza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top