2011-10-05 80 views
3

在Smarty模板主题中,我希望在模板中实现MD5以基于字符串和盐得到唯一的散列。 (无法访问调用模板的PHP,否则这将是微不足道的)。 Smarty似乎没有内置MD5功能。我想我可以根据字符串的长度和其他一些独特的帐户信息以及使用Smarty的函数创建一个散列,但希望可以有更好的方法来做到这一点,我忽略了这一点。任何人对此有任何想法或想法?谢谢!在Smarty模板引擎中执行MD5功能

+0

您正在使用哪个版本的Smarty? –

+0

您有权访问Smarty库代码吗?在这种情况下,您可以添加自己的自定义修改器。 – Tom

回答

6

如果您只是使用股票md5函数,则可以将其用作修改器。

{$string|md5} 

从文档:

所有的PHP-功能可以被隐式地用作改性剂,如实施例中证明的上方。但是,使用php函数作为修饰符有两个小陷阱:

  • 首先 - 有时函数参数的顺序不是理想的顺序。使用{“%2.f”| sprintf:$ foo}格式化$ foo实际上可行,但要求更直观,如Smarty发行版提供的{$ foo | string_format:“%2.f”}。其次 - 如果启用$ security,则所有将用作修饰符的php函数都必须在$ security_settings数组的MODIFIER_FUNCS元素中声明为受信任。

Source v2
Source v3

+0

完美,谢谢先生。 Smarty手册条目被称为[语言修饰符](http://www.smarty.net/docsv2/en/language.modifiers),我的搜索无法找到它的原因是因为如果您阅读它也会说“全部php函数可以隐式地用作修饰符“。 –

+0

我的荣幸戴夫! –

0

这可能会实现。未测试:

{assign var="string_to_hash" value="$string:$salt"} 
{$string_to_hash|md5}