CFML IF / ELSEステートメントはColdFusion 6の下で奇妙に行動する

StackOverflow https://stackoverflow.com//questions/21028801

  •  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)

Enter Enter Image説明

どんな考えですか?私はたくさんのさまざまなオートオントと同じ結果を試しました。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()への無効な呼び出しを取得することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top