我有以下非常简单的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)的含义。

enter image description here

知道吗?我尝试了许多许多不同的方法和相同的结果。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() 出主模板。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top