0

我有一个 mysql 数据库,在其中一个字段中,我有一堆普通的 html 和一个 php 脚本。当我从数据库中提取并显示该字段时,php 不会呈现为 php,而是呈现为 html。想知道是否可以将 php 脚本放在 mysql 数据库字段中,然后在将它们拉到网页上时将它们呈现为 php,如果可以,我该怎么做。

4

3 回答 3

3

我在使用 eval 函数之前已经这样做了。然而,eval 是危险的,因为如果恶意代码被注入它可能会造成严重的伤害,所以要谨慎行事。

作为替代方案,我所做的是将类名和参数存储在数据库中,然后生成给定的类以生成 html 和 php。

于 2013-01-28T20:40:19.837 回答
1

您正在寻找的是eval()......因为当您从数据库中提取代码时,它会存储为字符串。

但请注意!...

eval()语言结构非常危险,因为它允许执行任意 PHP 代码。因此不鼓励使用它

直接取自PHP 文档

如果您将用户输入带入数据库字段,请不要使用eval(),因为用户可能会将恶意脚本上传到您的数据库中。

事实上,为什么需要将 PHP 存储在数据库中?这听起来设计得很糟糕,我强烈建议您找到另一种方法。查看Mustache或搜索 PHP 模板引擎。

如果您必须先eval()阅读大量相关信息,请确保您了解安全风险。

于 2013-01-28T20:41:40.210 回答
1

出于安全、设计和其他考虑,首先这样做并不是一个好主意。

执行此操作的常用方法称为模板化

您在数据库中的 HTML 代码将包含占位符,比如

<h1>Title of this page: {$title}</h1>
<p>Contents: {$contents}</p>
...

然后,在从数据库中提取这些占位符后,您将使用 PHP 填写这些占位符。还有成熟的模板引擎可以完成这项工作,例如SmartyTwig。(后者更轻一些)

于 2013-01-28T20:42:14.600 回答