В 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 безопасности.