eval() para ejecutar código desde un cuadro de texto

Estoy tratando de hacer algo como esto http://writecodeonline.com/php/ para mi propio servidor. No puedo usar ese servicio porque necesito usar cURL que no tienen habilitado por razones obvias.

Este es el código que tengo hasta ahora.

Para la primera página donde ingresa el código que desea probar.

<form method="post" action="process.php">
<textarea name="code" cols="40" rows="5"></textarea><br>
<input type="submit" value="Submit" />
</form>

Y para ejecutar el código.

<?php
$result = eval($_POST['code']); 
echo $result;
?>

Puede ver los códigos de error si intenta usarlo aquí http://alexseyer.com/phptest.php

Sé que esto es un no-no de seguridad, pero de todos modos no tengo nada de valor en el servidor.

preguntado el 04 de julio de 12 a las 07:07

Son solo advertencias, solo pon un error_reporting(0); en la parte superior de su proceso.php y estará bien. (Pero tenga cuidado, bloquee ciertos comandos (passthru, system, etc.). Obtuve su tiempo de actividad. :) Y, oh sí, stripslashes. :) -

@NoLifeKing ocultar la advertencia no es una solución... -

Ayudaría a las personas en lugar de obligarlas a hacer algo en su sitio, decir "Puse .." y me devolvieron "...." -

@MiqdadAli Eso es cierto. Pero lo libraría de las advertencias ASCII (y también de todos los demás mensajes de error). Y no, no he pegado solo unas líneas de PHP en mis días. :) -

@Alex Seyer Creo que solo has pegado unas pocas líneas de código de pHP. -

2 Respuestas

Podrías probar el siguiente código. Utilizar get_magic_quotes_gpc() para verificar si magic_quotes_gpc está activado.

if(!empty($_POST)){
    if(get_magic_quotes_gpc())
        echo eval_php(stripslashes($_POST['content']));
    else{
        echo eval_php($_POST['content']);
    }
}

function eval_php($content)
{
    ob_start();
    eval("?>$content<?php ");
    $output = ob_get_contents();
    ob_end_clean();
    return $output;
}

Respondido 04 Jul 12, 07:07

echo 123; funciona

el problema es que las comillas se escaparán con una barra invertida. Mira esto php:añadirbarras, puedes apagarlo deshabilitar el magic_quotes .

Respondido 04 Jul 12, 07:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.