0

我想要求/包含数据库记录中的内容,但要求/包含只接受文件。这件事与缓存有关,所以我不想向文件写入任何内容(冲突等)。如何躲避它?

4

4 回答 4

3

您是否从数据库中获取 PHP 代码?如果是这样,你可能做错了。理想情况下,您应该只将数据存储在数据库中,而不是代码。

如果您要从数据库中获取 PHP 结构,请考虑使用它的serialize()'d 版本(或json_encode()'d)。

也许我错过了你想要完成的确切目的,如果我的答案走错了路,请告诉我。

无论你做什么,都不要依赖,eval除非你真的必须;即使那样,也不要:)

于 2012-05-11T11:47:56.767 回答
1

这是非常危险的,特别是如果数据库内容是由用户提供的,但无论如何你都可以使用它:

eval($your_database_content);

手动的

于 2012-05-11T11:41:22.547 回答
1

如果是代码,则需要使用eval(),尽管有很多反模式涉及eval()

手册说:

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

于 2012-05-11T11:42:03.963 回答
1

由于其他人已经涵盖eval()并且这是一个坏主意,我将谈到将这个“内容”写入文件的主题。使用tempnam. 这将为您提供刚刚创建的具有 0600 权限的唯一文件名的名称。然后您可以打开它,编写您的内容,关闭,然后要求/包含。tempnam请参见手册页上的示例 #1 。

确保检查 的返回值tempnam不为假;完成后确保unlink文件。

于 2012-05-11T12:10:12.267 回答