我有以下非常简单的if / else语句:
<cfif Server.ColdFusion.ProductVersion GTE "7">
<cfoutput>#encrypt("Test text", "77qidrWFoQg96taobooCm3/WimS2Gcdd", "DESEDE", "Hex")#</cfoutput>
<cfelse>
<cfoutput>#encrypt("Test text", "77qidrWFoQg96taobooCm3/WimS2Gcdd")#</cfoutput>
</cfif>
在CF 7,8,9,10下工作,但不在CF 6下,我得到以下错误,因为它不关心<cfif>
标签并执行对更高版本的意义CF(> 7)。
有什么想法吗?我尝试了许多不同的ion和相同的结果。 CF 6让我绝望。 附:不,我写的一些脚本我的客户还没有转移到更高版本。
答案 0 :(得分:9)
ColdFusion正在尝试编译页面,但它不能,因为您使用encrypt
函数的无效语法。 CF 6不允许将这些参数传递给encrypt
。我建议你是否需要支持CF6,你使用<cfinclude>
语句来包含后CF6代码。如下所示:
<cfif listfirst(server.coldfusion.productversion) gte 7>
<cfinclude template="cf7encrypt.cfm" />
<cfelse>
<cfinclude template="cf6encrypt.cfm" />
</cfif>
然后在两个cfm文件中,您可以包含要加密的特定于版本的调用。然后它将正确编译。
另一种选择是让两个不同的CFC充当加密包装(一个用于CF6,一个用于CF7 +),然后加载适当的CFC并调用加密功能。在任何一种情况下,关键是从主模板中获取对encrypt()
的无效调用。