Pregunta

En PHP, ¿hay alguna manera de borrar / eliminar todos los elementos anteriormente eco o impresas?

Por ejemplo:

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

?>

Mi secuencia de comandos utiliza el include función. No se supone que los archivos incluidos hacerse eco de nada. Sólo en caso de que alguien (ex = pirata informático) intenta, necesito una manera de eliminar.

¿Fue útil?

Solución

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

?>

Las funciones de almacenamiento intermedio de salida también son útiles en hackery para obligar a funciones que sólo se imprimen para volver cuerdas, es decir.

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

Otros consejos

mientras @monoxide es correcto, es mejor encontrar formas más intuitivas de hacer lo mismo. por ejemplo:.

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

Saludos,

JRH

Lo ideal es que usted no debe nada de salida que en definitiva no desea imprimir. Mantenga su lógica separada de su presentación por menos frustración.

Una vez dicho esto, puede consultar los href="http://us3.php.net/manual/en/book.outcontrol.php" rel="nofollow noreferrer"> opciones búfer de salida

Si es resultado de la depuración y la información del estado del programa está preocupado por tal trigger_error puede estar más cerca de lo que necesita, como por ejemplo:

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

Cuando el script se encuentra en producción no lo puedo mostrar a los errores como generalmente son discapacitados o no ha entrado. También es mejor que ver los errores fatales de esta manera con E_USER_ERROR en lugar de utilizar die ().

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

Lo anterior también incluirá un archivo y le dará su contenido como una cadena.

Advertencia:. Ditching Los reguladores también deshacerse de cualquier mensaje de error planteados, por lo que la depuración (potencialmente) una pesadilla

Si un hacker digamos que tiene acceso a su archivo PHP, también será capaz de quitar la instrucción borrar la memoria de salida.

Si usted está haciendo esto porque usted está dejando a sus usuarios subir scripts PHP, déjenme decirles que esta es una muy mala idea.

En ambos casos, haciendo lo que está pidiendo añade 0 de seguridad.

scroll top