将代码存储在SQL数据库中并执行它

时间:2013-02-01 18:58:13

标签: php mysql

我希望将某些代码片段存储在数据库表中作为模板,但我不确定它们是否会产生问题。我一直在不同的帖子中阅读来自不同人的混合信息,我很高兴我对这个问题很清楚。

我已经知道你无法将PHP回显/打印到网页中。显然你可以回显HTML的字符串,但是当你尝试用PHP代码做它时会变得很尴尬。我设法做到这一点的唯一方法是通过eval,这在大多数情况下显然都很糟糕......所以我使用另一种方法来实现模板(即编写一个php文件用作包含文件)

我要问的主要问题是:在表格中的文本类型字段(mediumtext,longtext等)中存储PHP代码字符串(包括SQL语句)是否真的存在问题?这些SQL语句是否可以执行任何操作,例如执行实际操作,还是只保留为文本字符串?

为了澄清,我存储代码字符串的原因是因为如果网络管理员希望将它们分配到页面的特定区域(div),它们就是要使用的模板。

2 个答案:

答案 0 :(得分:3)

使用SMARTY模板。这将巧妙地解决您的问题,您不需要在数据库中存储任何内容。它还可以使您的PHP代码与HTML完全分开。

答案 1 :(得分:-2)

不要这样做。如果您的数据库遭到入侵并且某人注入恶意PHP,则可能会执行该数据库。您应该将模板存储为文件,并在需要时调用它们。

你实际上可以回显/打印 PHP。你可以使用eval来做。

  

eval()语言构造非常危险,因为它允许执行任意PHP代码。 因此不鼓励使用。如果您仔细确认除了使用此构造之外没有其他选择,请特别注意不要将任何用户提供的数据传递到其中事先正确验证它。