بيان 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 image description here

اي فكرة؟لقد جربت العديد من الخيارات المختلفة ونفس النتيجة.CF 6 تجعلني أشعر باليأس.ملاحظة.لا، لن ينتقل عملائي الذين أكتب لهم بعض النصوص البرمجية إلى إصدار أحدث بعد.

هل كانت مفيدة؟

المحلول

يحاول ColdFusion تجميع الصفحة، لكنه لا يستطيع ذلك لأنك تستخدم بناء جملة غير صالح لـ encrypt وظيفة.لا يسمح CF 6 بتمرير تلك الوسائط إلى encrypt.أقترح إذا كنت بحاجة إلى دعم CF6 أن تستخدم ملف <cfinclude> بيان ليشمل رمز ما بعد CF6.لذلك شيء مثل:

<cfif listfirst(server.coldfusion.productversion) gte 7>
  <cfinclude template="cf7encrypt.cfm" />
<cfelse>
  <cfinclude template="cf6encrypt.cfm" />
</cfif>

ثم في ملفي CFM، يمكنك تضمين استدعاءات خاصة بالإصدار للتشفير.ثم سيتم تجميعها بشكل صحيح.

هناك خيار آخر يتمثل في وجود اثنين من مركبات الكربون الكلورية فلورية المختلفة التي تعمل كمغلفات للتشفير (أحدهما لـ CF6 والآخر لـ CF7 +) ثم تحميل CFC المناسب واستدعاء وظيفة التشفير.في كلتا الحالتين، المفتاح هو الحصول على المكالمة غير الصالحة encrypt() خارج القالب الرئيسي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top