2011-10-05 73 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}