我想编写一个调用存储在MySQL数据库中的PHP页面的网页。存储在MySQL数据库中的页面包含我想在页面加载时运行的PHP和HTML代码。
我该如何实现这个功能?
我该如何实现这个功能?
简单:
$x // your variable with the data from the DB
<?php echo eval("?>".$x."<?") ?>
请告诉我,这在许多应用程序中都非常好用。我不禁注意到每个人都很快地说它有多糟糕,但却缓慢地给出一个直截了当的答案...
<?php ?>
将被视为HTML标签并隐藏起来。 - dbreval()
函数在其他回答中已经涵盖了。我同意您应该限制使用eval
,除非绝对需要。而不是在数据库中放置PHP代码,您可以只有一个类名,它具有称为execute()
的方法。每当您需要运行自定义PHP代码时,只需实例化从数据库中获取的名称的类并在其上运行->execute()
。这是一个更干净的解决方案,并且为您提供了极大的灵活性和显着提高了网站安全性。
你有没有考虑使用源代码控制系统来存储不同分支,以适应各种安装(和其中不同的模块)?这是我能想到的几个应用程序配置最佳实践之一。你的需求并不罕见,所以这是一个过去已经被其他人解决的问题;而将代码存储在数据库中则是我认为你很难找到参考或被建议作为最佳实践的做法。
很高兴你发表了澄清。你可能无意中提出了一个需要合适问题的答案。
$uniqid="tmp/".date("d-m-Y h-i-s").'_'.$Title."_".uniqid().".php";
$file = fopen($uniqid,"w");
fwrite($file,"<?php \r\n ".$R['Body']);
fclose($file);
// eval($R['Body']);
include $uniqid;
$lookFor = $row['page'];
include("resources/" . $lookFor . "Codebase.php");
通过这种方式,即使黑客能够访问您的数据库,他也无法直接放入恶意代码以执行。他可能会更改引用词,但除非他能够直接将文件放到服务器上,否则这对他没有任何好处。如果他能够直接将文件放到服务器上,那么如果他真的想要捣乱,您就完了。这只是我的个人看法。
是的,有理由执行存储的代码,但也有缺点。