Cfml se / allense dichiarazione che agisce strana sotto la fredda fusione 6
-
21-12-2019 - |
Domanda
Ho la seguente dichiarazione molto semplice se / alnici:
<cfif Server.ColdFusion.ProductVersion GTE "7">
<cfoutput>#encrypt("Test text", "77qidrWFoQg96taobooCm3/WimS2Gcdd", "DESEDE", "Hex")#</cfoutput>
<cfelse>
<cfoutput>#encrypt("Test text", "77qidrWFoQg96taobooCm3/WimS2Gcdd")#</cfoutput>
</cfif>
.
funziona ad esso dovrebbe essere sotto CF 7, 8, 9, 10 ma non sotto CF 6 in cui ottengo il seguente errore come se non si interessa il tag <cfif>
ed esegui ciò che è pensato per le versioni maggiori di CF (>7).
Qualche idea?Ho provato molte molte diverse Ozioni e lo stesso risultato.CF 6 mi rende disperato. P.S.No, i miei clienti scrivono alcuni script per non sposterò ancora in una versione successiva.
Soluzione
ColdFusion sta cercando di compilare la pagina, ma non può perché si utilizza una sintassi non valida per la funzione encrypt
.CF 6 non consente di passare a tali argomenti a encrypt
.Suggerisco se è necessario supportare CF6 che utilizzi un'istruzione <cfinclude>
per includere il codice post-cf6.Quindi qualcosa del genere:
<cfif listfirst(server.coldfusion.productversion) gte 7>
<cfinclude template="cf7encrypt.cfm" />
<cfelse>
<cfinclude template="cf6encrypt.cfm" />
</cfif>
.
Poi nei due file CFM è possibile includere le chiamate specifiche della versione per crittografare.Quindi compilerà correttamente.
Un'altra opzione sarebbe avere due diversi CFC che agiscono come involucri per crittografare (uno per cf6 e uno per cf7 +) e quindi caricare il CFC corretto e chiamare una funzione di crittografia.In entrambi i casi, la chiave è ottenere la chiamata non valida su encrypt()
dal modello principale.