Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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 - Fatal编程技术网

是否可以执行从MySQL查询结果返回的PHP代码?

是否可以执行从MySQL查询结果返回的PHP代码?,php,mysql,Php,Mysql,我遇到的问题如下:我有一个MySQL表,其中包含我希望在我的站点上显示的页面内容的详细信息。但是,我希望包含一些要执行的实际PHP代码,而不仅仅是打印为字符串。例如: require_once("Class.php"); Class::Function("Some Text For a Parameter"); 我希望在返回sql查询时以某种方式执行此代码,但就目前情况而言,它只是将该文本打印出来。有没有办法实现我想要的 提前感谢您抽出时间 问候, Stephen.您可以使用,但不应该使用。它

我遇到的问题如下:我有一个MySQL表,其中包含我希望在我的站点上显示的页面内容的详细信息。但是,我希望包含一些要执行的实际PHP代码,而不仅仅是打印为字符串。例如:

require_once("Class.php");
Class::Function("Some Text For a Parameter");
我希望在返回sql查询时以某种方式执行此代码,但就目前情况而言,它只是将该文本打印出来。有没有办法实现我想要的

提前感谢您抽出时间

问候,


Stephen.

您可以使用,但不应该使用。

它们是实现动态元素存储的几种方法:

  • :您可以将数据库中的任何字符串计算为php代码。如果数据库中存储的内容直接来自用户输入字段,则这不是很明智。您永远不知道要插入什么,它可能是有害代码(对服务器的安全有害)

  • save/include:您可以将来自数据库的内容保存在一个临时文件中,并将该文件包含在php代码中。如果任何人都可以在数据库中存储任何内容,那么这似乎也不安全

  • 使用模板引擎,该引擎具有合理的命令占用空间,如或。您可以将模板存储在数据库中并执行它们。如果您信任模板语言的实现(例如,禁用smarty内部的本机php调用),则模板需要具有正确的语法才能开始执行

一般来说,很难保护这样的动态php代码包含,因此应该将其视为不好的做法

您应该考虑一个DSL(特定于域的语言),您将信任它的解析器/编译器和执行引擎。

如果安全性不是一个问题(例如,因为您的应用程序不会公开),那么将php片段存储在数据库中是完全有效的

我希望这对你有帮助


杰罗姆·瓦格纳(Jerome Wagner)

我在我的个人CMS中做了一个变种,做了一个bbcode排序。我用php来计算[code][/code]标记内的值,然后在显示时,我有一个函数,它使用正则表达式来获取要运行的[code]标记内的代码内容。然后,它构建代码,关闭文本回显,运行脚本,然后再次启动文本回显。也许这个解释有点简单,但你明白了


我一定会避免评估

你记得把它放在标签里吗?嗨,杰罗姆,谢谢你花时间回复!你的建议对我很有帮助,也为我提供了一些思考方法的素材。目前,只有我可以为该表向数据库中输入任何特殊字符/代码。这背后的想法是将我的页面存储在数据库中,而不是包含内容的单个php文件。你好,斯蒂芬。