Как очистить ранее отобранные элементы в PHP

В php есть ли способ очистить / удалить все ранее отобранные или напечатанные элементы?

Например:

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

В моем скрипте используется функция include. Входящие файлы не должны ничего эха. На всякий случай, если кто-то (ex = hacker) пытается, мне нужен способ удалить.

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

Функции буферизации вывода

Функции буферизации вывода также полезны в хакерах, чтобы принуждать функции, которые печатаются только для возврата строк, т. Е.

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

в то время как @monoxide является правильным, лучше найти более интуитивные способы сделать то же самое. например:

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

Ура,

JRH

В идеале вы не должны выводить ничего, что вы в конечном итоге не хотите печатать. Держите свою логику отдельно от своей презентации за меньшее разочарование.

При этом вы можете проконсультироваться с параметрами буферизации вывода в PHP.

Если это отладочный вывод и информация о статусе программы, вас беспокоит, может быть, trigger_error может быть ближе к тому, что вам нужно, например:

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

Когда ваш скрипт находится в процессе производства, он не обнаруживает никаких ошибок, поскольку обычно они отключены или зарегистрированы. Также лучше делать фатальные ошибки таким образом с помощью E_USER_ERROR, а не с помощью die ().

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

Вышеупомянутое также будет содержать файл и предоставить его содержимое в виде строки.

Предостережение. Отбрасывание буфера также приведет к сбою любых сообщений об ошибках, что приведет к отладке (потенциально) кошмара.

Если хакер, допустим, имеет доступ к вашему файлу PHP, он также сможет удалить оператор, освобождающий выходной буфер.

Если вы это делаете, потому что вы позволяете пользователям загружать PHP-скрипты, позвольте мне сказать вам, что это очень плохая идея.

В обоих случаях выполнение того, что вы запрашиваете, добавляет 0 безопасности.