我已经创建了一个额外的图层,用户可以在某种HTML模板模块中使用自己的Smarty代码,但我需要确保它保存。
到目前为止,我已禁止使用{php}
- 标记,只能访问{$smarty.now}
。我想知道是否有办法,因为模板中存在Smarty,将所有指定的变量都输入到模板中?如果是这样,如何请求所有已分配变量的列表,以便我可以对其进行检查并将其排除在解析之外(意味着:在用户提交之后省略tpl-source)。
我非常感谢您为了保护/限制Smarty访问而忽略的任何帮助或贡献。
答案 0 :(得分:1)
首先,采取某种方式过于强大并限制它以保护它是一种错误的方法。很多年来,Java在浏览器插件上失败了。相反,如果你想拥有真正安全的解决方案,我建议你编写自己的小模板引擎,只有你需要提供给用户的功能。在那种情况下,没有办法剥削坏人。
答案 1 :(得分:0)
如果我理解正确,你要找的是$smarty->getTemplateVars();
这会给你一个数组,其中包含指定模板变量的名称/值。
名称
getTemplateVars() - 返回指定的变量值
描述
array getTemplateVars(string varname);
如果没有给出参数,则返回所有已分配变量的数组。
例14.31。 getTemplateVars 强>
<?php // get assigned template var 'foo' $myVar = $smarty->getTemplateVars('foo'); // get all assigned template vars $all_tpl_vars = $smarty->getTemplateVars(); // take a look at them print_r($all_tpl_vars); ?>