如何清除以前在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' ?> 

我的脚本使用包含function。 包含的文件不应该回显任何东西。 以防万一有人(前=黑客)尝试,我需要一种方法来删除。

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

输出缓冲function

输出缓冲函数在hackery中也是有用的,以强制只打印返回string的函数,

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

而@monoxide是正确的,它更好地find更直观的方法来做同样的事情。 例如:

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

理想情况下,你不应该输出你最终不想打印的东西。 保持你的逻辑与演示文稿分开,以减less挫折。

这就是说,你可以参考PHP中的输出缓冲选项。

如果它是debugging输出和程序状态信息,你担心可能trigger_error可能更接近你所需要的,如:

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

当你的脚本在生产中时,它通常不会显示任何错误,因为它们通常被禁用或logging。 使用E_USER_ERROR而不是使用die(),这样做也是最好的。

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

上面还会包含一个文件,并以string的forms给你它的内容。

注意:切入缓冲区也会抛出任何错误消息,使debugging(可能)成为一场噩梦。

如果黑客让我们说可以访问您的PHP文件,他也将能够删除清除输出缓冲区的语句。

如果你这样做是因为你让用户上传PHP脚本,让我告诉你,这是一个非常糟糕的主意。

在这两种情况下,做你所要求的都会增加0安全性。