如何从MySQL数据库中呈现PHP代码?
我正在创建某种定制CMS(家庭自动化)。 我不是一个PHP开发人员,只是一个业余爱好者 我努力实现的目标是: 在我的index.php页面中,我有如下内容:如何从MySQL数据库中呈现PHP代码?,php,mysql,security,rendering,Php,Mysql,Security,Rendering,我正在创建某种定制CMS(家庭自动化)。 我不是一个PHP开发人员,只是一个业余爱好者 我努力实现的目标是: 在我的index.php页面中,我有如下内容: "<?php echo $pageBody; ?> " “” 我从数据库中获取的PageBody,它对HTML和JS都很有效。但它不适用于PHP源代码 我做了一些研究,我相信这与PHP的安全限制有关 我的问题是:是否有人能够提供安全的样品(找不到任何像这样的样品)-我应该如何做到这一点 我正在尝试插入一些php代码,并最
"<?php echo $pageBody; ?> "
“”
我从数据库中获取的PageBody,它对HTML和JS都很有效。但它不适用于PHP源代码
我做了一些研究,我相信这与PHP的安全限制有关
我的问题是:是否有人能够提供安全的样品(找不到任何像这样的样品)-我应该如何做到这一点
我正在尝试插入一些php代码,并最终通过浏览器进行渲染:
<div id="outer">
<div id="inner">
***PHP Code should go here***
</div>
</div>
***PHP代码应该放在这里***
此时-它被渲染为文本。不过,我可以正确呈现HTML和JS
我更喜欢的方式是——尽可能安全
非常感谢大家 要执行存储在字符串(或数据库)中的PHP,您可以使用,但要小心这可能有点危险。要执行存储在字符串(或数据库)中的PHP,您可以使用,但要小心这可能有点危险。您不能在浏览器中呈现(可能是指执行)PHP代码,因为php脚本在服务器上执行,然后输出被发送到浏览器。当浏览器收到响应时,脚本已经完成执行 您可以从数据库中获取代码,并在发送输出之前使用eval()。但是您必须意识到这种方法的缺点。您不能在浏览器中呈现(可能是指执行)php代码,因为php脚本在服务器上执行,然后输出被发送到浏览器。当浏览器收到响应时,脚本已经完成执行
您可以从数据库中获取代码,并在发送输出之前使用eval()。但是您必须意识到这种方法的缺点。当您从数据库文本字段检索PHP代码时,PHP解释器并不“知道”它应该将数据解析为PHP脚本。对于PHP解释器来说,该字段中的数据与任何其他数据都没有区别——都是字符串,没有任何特殊意义 如果您处理的是纯PHP脚本,那么可以使用
eval
()来完成此。预先警告:eval
被认为是“邪恶的”,因为使用它会带来风险,特别是当用户对数据库内容有任何输入时
在您的例子中,听起来您想要解析存储在数据库字段中的混合PHP和HTML。为了做到这一点,您需要将数据库数据写入一个文件,然后包含它,这样PHP解释器就可以完成它的工作。在这个过程中,您应该实现某种缓存机制,否则它可能会对有很多用户的服务器造成负担。您可能还希望使用输出缓冲()来捕获输出,而不是立即将其发送出去
简单地说,您希望执行以下操作:
$content_from_db = "<h1>Hello <?php print 'Clarisse'; ?></h1>";
$identifier_from_db = '12'; // like the primary key from the table
$file_handle = fopen('cached_content/CACHE_'.$identifier_from_db.'.php', 'w');
fwrite($file_handle, $content_from_db);
fclose($file_handle);
// here is where you'd start output buffering, if you're going to do that (optional)
include('cached_content/CACHE_'.$identifier_from_db.'.php');
// and then here you retrieve the output buffer's content (optional)
$content\u from\u db=“Hello”;
$identifier_from_db='12';//类似于表中的主键
$file_handle=fopen('cached_content/CACHE_'.$identifier_from_db.'.php','w');
fwrite($file\u handle,$content\u from\u db);
fclose($file\u handle);
//如果要进行输出缓冲,可以从这里开始(可选)
包括('cached_content/CACHE_.$identifier_from_db..php');
//然后在这里检索输出缓冲区的内容(可选)
请注意,这不是包含动态内容的“传统”方式,并且上面的代码未准备好生产。在不了解您的用例的情况下,我无法确定,但是这种将PHP代码存储在数据库中的想法是一种非常不寻常的方法
另一个替代滚动您自己的是smarty模板库。在这里查看:。使用smarty,您可以编写一个资源插件来从数据库中提取模板。它看起来像上面的代码()
文档
fwrite
-
包括
-
- theopensourcery.com上的PHP基础知识-
- Wikipedia上的服务器端脚本-
eval
-
- 输出控制(缓冲)-
- 聪明的
从数据库文本字段检索PHP代码时,PHP解释器不“知道”它应该将数据作为PHP脚本进行解析。对于PHP解释器来说,该字段中的数据与任何其他数据都没有区别——都是字符串,没有任何特殊意义
如果您处理的是纯PHP脚本,那么可以使用eval
()来完成此。预先警告:eval
被认为是“邪恶的”,因为使用它会带来风险,特别是当用户对数据库内容有任何输入时
在您的例子中,听起来您想要解析存储在数据库字段中的混合PHP和HTML。为了做到这一点,您需要将数据库数据写入一个文件,然后包含它,这样PHP解释器就可以完成它的工作。在这个过程中,您应该实现某种缓存机制,否则它可能会对有很多用户的服务器造成负担。您可能还希望使用输出缓冲()来捕获输出,而不是立即将其发送出去
简单地说,您希望执行以下操作:
$content_from_db = "<h1>Hello <?php print 'Clarisse'; ?></h1>";
$identifier_from_db = '12'; // like the primary key from the table
$file_handle = fopen('cached_content/CACHE_'.$identifier_from_db.'.php', 'w');
fwrite($file_handle, $content_from_db);
fclose($file_handle);
// here is where you'd start output buffering, if you're going to do that (optional)
include('cached_content/CACHE_'.$identifier_from_db.'.php');
// and then here you retrieve the output buffer's content (optional)
$content\u from\u db=“Hello”;
$identifier_from_db='12';//类似于表中的主键
$file_handle=fopen('cached_content/CACHE_'.$identifier_from_db.'.php','w');
fwrite($file\u handle,$content\u from\u db);
fclose($file\u handle);
//如果要进行输出缓冲,可以从这里开始(可选)
包括('cached_content/CACHE_.$identifier_from_db..php');
//然后在这里检索输出缓冲区的内容(可选)
请注意