是否可以通过html表单发布PHP代码,然后将其作为PHP运行?
类似这样的事情
<form action="#" method="post">
<textarea name="code"></textarea><br>
<input type="submit" value="Run!">
</form>
<?php
if (!empty($_POST['code'])) {
$_POST['code']; // Run the Posted PHP code here
}
?>
所以,如果我输入
<?php echo 'this is a test'; ?>
在我的 textarea 中然后发送表单,它将回显“这是一个测试”出来
在回答后编辑
谢谢你们,我不知道eval()函数,我想我也可以这样做以防止黑客攻击:<form action="#" method="post">
<textarea name="code"><?php echo $_POST['code']; ?></textarea><br>
<input type="password" name="pass"><br>
<input type="submit" value="Run!">
</form>
<?php
$pass = 'A SHA2 HASHED PASSWORD';
if (!empty($_POST['code']) && $pass == hash('sha384',$_POST['pass'])) {
eval($_POST['code']); // Run the Posted PHP code here
}
?>
答案 0 :(得分:3)
使用eval()通常是一个坏主意,我不推荐它。
以下是一些原因:
潜在的不安全输入:传递不受信任的参数是一种失败的方法。确保参数(或其中的一部分)完全受信任通常不是一项微不足道的任务。
棘手:使用eval()会使代码变得更聪明,因此更难以遵循。引用Brian Kernighan“调试的速度是编写代码的两倍。因此,如果您尽可能巧妙地编写代码,那么根据定义,您可能不够聪明,无法对其进行调试”
(来自#951373)
如果你真的应该,你可以像这样使用它:
<?php
if (!empty($_POST['code']))
{
$code = $_POST['code']
eval($code);
}
?>
我希望这会有所帮助。
答案 1 :(得分:2)
可以使用eval();
函数http://php.net/eval
eval($_POST['code']); // Run the Posted PHP code here
请记住,这经常被黑客滥用(代码注入)。
如果您想在没有上传或登录的情况下使用PHP,
我强烈建议使用php codepad,不要冒服务器的风险:https://www.google.com/search?q=codepad+php&ie=utf-8&oe=utf-8&aq=t
答案 2 :(得分:2)
<form action="#" method="post">
<textarea name="code"></textarea><br>
<input type="submit" value="Run!">
</form>
<?php
if (!empty($_POST['code'])) {
eval($_POST['code']); // Run the Posted PHP code here
}
?>
答案 3 :(得分:1)
您还可以通过将动作标记与.php文件的名称保持一致来回溯。