eval()从文本框中执行代码

时间:2012-07-04 06:42:38

标签: php curl eval

我正在尝试为自己的服务器制作类似http://writecodeonline.com/php/的内容。我不能使用该服务,因为我需要使用cURL,因为显而易见的原因,这些cURL没有启用。

这是我到目前为止的代码。

输入要测试的代码的第一页。

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

并执行代码。

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

如果您尝试在http://alexseyer.com/phptest.php

中使用错误代码,则可以看到错误代码

我知道这是一个安全禁忌,但无论如何我在服务器上没有任何价值。

2 个答案:

答案 0 :(得分:2)

您可以尝试以下代码。使用get_magic_quotes_gpc()检查magic_quotes_gpc是否已启用。

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

答案 1 :(得分:0)

echo 123;有效

问题是引号将使用反斜杠进行转义。 看看php:addslashes,您可以通过disabling magic_quotes选项将其关闭。