CFML if/else语句在Coldfusion6下表现怪异
-
21-12-2019 - |
题
我有以下非常简单的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>
它应该在CF7,8,9,10下工作,但不是在CF6下,我得到以下错误,就像它不关心 <cfif>
标记并执行对于更大版本的CF(>7)的含义。
知道吗?我尝试了许多许多不同的方法和相同的结果。CF6让我绝望。附:不,我为我编写一些脚本的客户还不会移动到更高版本。
解决方案
ColdFusion正在尝试编译页面,但它不能,因为您使用的是无效的语法 encrypt
函数。CF6不允许将这些参数传递给 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函数。在这两种情况下,关键是得到无效的调用 encrypt()
出主模板。
不隶属于 StackOverflow