2012-07-04 41 views
-1

我试图为我自己的服务器制作这样的http://writecodeonline.com/php/。我无法使用该服务,因为我需要使用cURL,因为显而易见的原因,它们没有启用。eval()从文本框执行代码

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

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

<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

我知道这是一个安全没有没有,但我有服务器上的有价值的东西呢。

+0

它们只是警告,只需在process.php的顶部放一个'error_reporting(0);'就行了。 (但要小心,请阻止某些命令(passthru,系统等)。我有你的正常运行时间。:)哦,是的,stripslashes。 :) – NoLifeKing

+0

@NoLifeKing隐藏警告是不是一个解决方案..... –

+0

这将帮助人们,而不是让他们去做你的网站上的东西,说“我放入..”,并得到“....” – BugFinder

回答

0

echo 123;工作

的问题是,引号将反斜杠转义。 看看php:addslashes,你可以通过disabling关闭magic_quotes选项。

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