Подтвердить что ты не робот

Как очистить ранее отобранные элементы в 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'

?>

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

4b9b3361

Ответ 1

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

Ответ 2

в то время как @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

Ответ 3

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

При этом вы можете проконсультироваться с параметрами Output Buffering в PHP.

Ответ 4

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

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

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

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

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

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

Ответ 5

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

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

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