Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从MySQL数据库中呈现PHP代码?_Php_Mysql_Security_Rendering - Fatal编程技术网

如何从MySQL数据库中呈现PHP代码?

如何从MySQL数据库中呈现PHP代码?,php,mysql,security,rendering,Php,Mysql,Security,Rendering,我正在创建某种定制CMS(家庭自动化)。 我不是一个PHP开发人员,只是一个业余爱好者 我努力实现的目标是: 在我的index.php页面中,我有如下内容: "<?php echo $pageBody; ?> " “” 我从数据库中获取的PageBody,它对HTML和JS都很有效。但它不适用于PHP源代码 我做了一些研究,我相信这与PHP的安全限制有关 我的问题是:是否有人能够提供安全的样品(找不到任何像这样的样品)-我应该如何做到这一点 我正在尝试插入一些php代码,并最

我正在创建某种定制CMS(家庭自动化)。 我不是一个PHP开发人员,只是一个业余爱好者

我努力实现的目标是:

在我的index.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');
//然后在这里检索输出缓冲区的内容(可选)
请注意