CFML IF / ELSEステートメントはColdFusion 6の下で奇妙に行動する
-
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>
.
は、CF 7,8,9,10では機能していますが、CF 6ではなく、<cfif>
タグを気にしないように次のエラーが発生し、CFのより大きなバージョンのものを実行するものを実行します(>7)
どんな考えですか?私はたくさんのさまざまなオートオントと同じ結果を試しました。CF 6私を絶望させます。 P.S.いいえ、私のクライアント私はいくつかのスクリプトを書いていますが、それでも後のバージョンに移動することはありません。
解決
ColdFusionはページをコンパイルしようとしていますが、encrypt
関数に無効な構文を使用しているため、できません。CF 6は、それらの引数をencrypt
に渡すことを許可しません。POST-CF6コードを含めるために<cfinclude>
ステートメントを使用するCF6をサポートする必要がある場合はお勧めします。そのようなもの:
<cfif listfirst(server.coldfusion.productversion) gte 7>
<cfinclude template="cf7encrypt.cfm" />
<cfelse>
<cfinclude template="cf6encrypt.cfm" />
</cfif>
.
その後、2つのCFMファイルで、暗号化にバージョン固有の呼び出しを含めることができます。それからそれは正しくコンパイルされます。
別のオプションは、暗号化するラッピングとして機能する2つの異なるCFC(CF6用、CF7 +用の1つ)を持ち、適切なCFCをロードして暗号化機能を呼び出します。どちらの場合も、キーはメインテンプレートからencrypt()
への無効な呼び出しを取得することです。
所属していません StackOverflow