2009-12-13 60 views
1

我有一个基本的cms存储在mysql数据库的表中的页面 - 是否有可能在页面中包含PHP,然后让PHP处理它,而不是像原样输出它?在一个数据库中处理PHP

回答

1

我认为你必须使用eval()来做这样的事情。所以是的,可能但不推荐。

+0

我能问这个安全问题会是什么? (我是唯一一个可以将内容添加到数据库的人,我通过phpmyadmin执行此操作) – 2009-12-13 19:07:23

+0

我想你会遇到更多性能问题,而不是安全问题。 eval()非常昂贵,因为PHP必须为eval()的每个调用产生另一个解释器。 – 2009-12-13 19:08:52

+0

嗯,谢谢你:) – 2009-12-13 19:10:08

1

由于这两个建议都表示,使用eval()不建议和带来了严重的安全问题。

最好的办法是创建一个基本的模板系统。您可以在前端有一组预先确定的PHP代码块,这些代码块由后端的某些关键值触发,即{show_categories}可能是一个标签,在解析时会被所有类别替换。

要实现这样的功能,您必须搜索特定的模板键值。如果找到任何此类键值,请使用该键值运行相关的代码,并用代码替换该键。

查找和替换模板关键的一个非常简单的例子:

// check if the show_categories key is found 
if (strpos($body, '{show_categories}') !== false) { 
    // generate the show categories output from a PHP function 
    $categories = getCategoriesOutput(); 
    // replace key with content 
    str_replace('{show_categories}', $categories, $body); 
} 
+0

+1:Smarty或Phable将是一个选项 – 2009-12-13 19:20:01