任何人都知道如何做这样的事情。
我有一个textarea设置,允许用户编辑页面内容。然后将内容存储在数据库中,并在html模板中通过php在前端检索。类似的东西:
<html>
yada yada...
<?php
echo get_page_contents_by_id($_GET['id']);
?>
yada yada...
</html>
它全部运行在一个.php文件中,以防有人想要调用它。
我想知道的是,因为我通过php从数据库中获取内容,是否有任何方法可以在该内容中检索php代码并仍然可以在不进行任何文件编写的情况下运行它。
答案 0 :(得分:3)
您可以使用PHP eval()
方法执行从数据库返回的PHP代码 - 就像它实际上直接在您的PHP文件中编写一样。
e.g。
<?php
eval("echo('hello world');");
?>
打印:
你好世界
答案 1 :(得分:1)
您可以将eval用于此目的。
答案 2 :(得分:1)
eval()
正如James Goodwin和Gazler所说,实际上是从字符串数据中执行PHP代码的唯一方法。
除了安全后果之外 - 通过访问mySQL数据可能会损害整个网站 - 这种方法会使代码很难调试,因为您必须通过eval跟踪所有错误消息()d代码。
答案 3 :(得分:0)
我试图做同样的事情,但添加了标签和普通的HTML标签。这不行。如果您需要将PHP与PHP一起存储,请考虑更多的XHR解决方案,该解决方案对每个页面的PHP代码都较少依赖。
答案 4 :(得分:0)
考虑另一种选择。真。强>
无论你做什么安全检查,功能解析等,这仍然是一个非常坏主意。
一个稍微不那么糟糕的想法,为什么不查看模板解决方案,例如http://www.smarty.net或http://www.google.com/search?q=php+template+engine
答案 5 :(得分:0)
以下是在textarea中执行代码的代码。
<?php
if($_POST){
print_r($_POST);
extract($_POST);
$file = rand(1000,10000); // creating file with random number
file_put_contents($file.'.php', '<?php '.$code.' ?>');
ob_start();
include $file.'.php';
echo ob_get_clean();
unlink($file.'.php'); // deleting the created file after execution.
die('test');
}
?>
<textarea id="testcode" ></textarea>
<input type="submit" onClick="return changePermissions1()" />
<script>
function changePermissions1(){
var code = {};
code['code'] = $("#testcode").val();
var pass_url = "executefile.php"; // there you can pass the code
$.ajax({
type : "POST",
beforeSend : loadingStarts,
url : pass_url,
data : code,
success : function(responseText){`enter code here`
loadingEnds();
alert(responseText);
}
});
}
</script>