什么是PHP的一个好的,安全的模板系统?

时间:2010-04-01 02:39:17

标签: php templates

(摘要:我的用户需要能够编辑动态生成的网页的结构,而不会造成任何损害。)

问候,女士们,先生们。我目前正在开展一项服务,来自特定人群的客户可以创建特定类型的网站并将其填入自己的内容。该系统是用PHP编写的。

该系统的许多用户希望编辑他们的特定网站的外观,或者更常见的是让设计师为他们做这些。编辑CSS很好,花花公子,但有时这还不够。有时他们希望通过编辑动态创建的网页的原始HTML来改变整个页面结构。

据我所知,WordPress使用的模板系统非常适合我的使用。除了一件至关重要的事情。除了能够编辑注释的显示方式或菜单的去向之外,编辑模板的人可以让该模板执行任意PHP代码。

由于相同的代码库运行所有这些不同的站点,所有内容都在相同的数据库中,允许我的用户运行任意代码显然是不可能的。

所以我需要的是一个愚蠢的,愚蠢的模板化模板系统,我的用户可以自己编辑大部分页面结构,在任何地方拉动动态部分,甚至不能回显1 + 1;

观察以下psuedocode:

<!DOCTYPE html>
<title><!-- $title --></title>
<!-- header() -->
<!-- menu() -->
<div>Some random custom crap added by the user.</div>
<!-- page_content() -->

这就是我想授予用户权力的程度。他们不需要做自己的循环或计算或任何事情。只需包含我的变量和函数,剩下的就交给我了。

我确信我不是这个星球上唯一需要这样的人。你知道我可以用的任何现成的模板系统吗?

提前感谢您的回复。

4 个答案:

答案 0 :(得分:5)

我推荐Twig。

http://www.twig-project.org/

特殊性是沙箱模式。

  

安全: Twig有一个沙箱模式来评估不受信任的模板代码。这允许将Twig用作用户可以修改模板设计的应用程序的模板语言。

就像你的例子一样极其简单的东西,为什么不写一个简单的类来解析你的模板呢?我认为实际上并没有像你要求维护和分发一样简单,因为要写一些东西并不是很难。

只有我能想到的其他东西可能是小胡子?虽然我认为它的PHP实现在开发阶段还很早,但我不确定它目前是多么稳定或可用。

http://github.com/bobthecow/mustache.php

答案 1 :(得分:4)

你为什么不使用Smarty?

http://www.smarty.net/

有一个security功能,可自定义settings专为您所需要的设计,通过第三方进行编辑。

您可以做的另一种方法是在进行更改时清理输入,以确保它们没有包含任何不适当的内容

答案 2 :(得分:1)

http://dwoo.org/

Dwoo是一个PHP5模板引擎,于2008年初启动。这个想法来自Smarty,一个众所周知的模板引擎,越来越老。它承载了它的年龄,具有与新版本相比不一致的旧功能,为PHP4编写,其面向对象方面没有利用PHP5在该领域的更高级功能等。因此Dwoo诞生了,希望能够提供更新,更强大的引擎。到目前为止,它已被证明比Smarty更快,它提供了一个兼容层,允许已经使用Smarty多年的开发人员逐步将其应用程序转换为Dwoo。

答案 3 :(得分:0)

<!-- $title --><!-- header() -->之间的区别是什么? 为什么不使它成为相同的样式然后只做<!-- $header -->简单的str_replace?