在Smarty模板引擎中执行MD5函数

5
在Smarty模板主题中,我想在模板中实现MD5,以便基于一个字符串和一个盐获得一个唯一的哈希值。(没有访问调用模板的PHP代码,否则这将是微不足道的)。Smarty似乎没有内置的MD5函数。我想通过使用Smarty的Math函数,基于字符串的长度和其他一些唯一的账户信息来创建一个哈希值,但是希望有更好的方法可以做到这一点,希望有人能提出一些想法或建议。谢谢!

你在使用哪个版本的Smarty? - Maxime Pacary
你有Smarty库代码的访问权限吗?如果是这样,你可以添加自己的自定义修饰符。 - Tom
2个回答

8
如果你只是使用原生的md5函数,你可以将其作为一个修饰符来使用。
{$string|md5}

从文档中得知:

所有的 PHP 函数都可以隐式地用作修改器,就像上面的示例所演示的那样。但是,使用 PHP 函数作为修改器有两个小陷阱:

  • 首先-有时函数参数的顺序不是理想的顺序。使用 {"%2.f"|sprintf:$foo} 格式化 $foo 实际上是有效的,但更直观的方式是 {$foo|string_format:"%2.f"},它由 Smarty 分发提供。

  • 其次-如果启用了 $security,则 MODIFIER_FUNCS 元素中声明的所有要用作修改器的 PHP 函数都必须被信任。

原始来源 v2
原始来源 v3


非常好,谢谢您先生。Smarty手册条目称为语言修饰符,我的搜索无法找到它的原因是因为如果您仔细阅读,它还说“所有php函数都可以隐式地用作修饰符”。 - Dave Drager

0

这个可能有效。还没有测试过:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接