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

?>

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

45
задан K-Gun 22 October 2019 в 01:40
поделиться

5 ответов

<?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
?>
96
ответ дан 26 November 2019 в 21:07
поделиться

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

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

1
ответ дан 26 November 2019 в 21:07
поделиться

хотя @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;
?>

Ура,

младший

4
ответ дан 26 November 2019 в 21:07
поделиться

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

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

Когда ваш сценарий находится в производстве, он не будет отображать никаких ошибок, поскольку обычно они отключены или регистрируются. Это'

0
ответ дан 26 November 2019 в 21:07
поделиться

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

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

В обоих случаях

-1
ответ дан 26 November 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: