微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在CFOUTPUT中显示另一个变量

如何解决在CFOUTPUT中显示另一个变量

我有一条纸条向人们推送,是长文本格式。 因此显示为:

 <cfoutput>
 #maindata#
 </cfoutput>

可以说,数据是一堆正确输出的“等等等等,还有更多文本数据,等等”。

我想做的是在“ LongText”中添加一个附加的变量注释

所以我在文本数据中尝试过。

  #set.newnote#

我也没有运气尝试过这两个:

 #Variables[set.newnote]#
 #evaluate(set.newnote)# 

我没有运气。这是可能的还是我需要突破输出以在其后添加其他输出

解决方法

我想问您这个问题是因为您想在数据库中存储的文本中嵌套Coldfusion字符串变量。

您可以使用evaluate()de()的组合来做到这一点,就像这样:

<cfset mockDBText = "The ##x.a## jumps over the ##x.b##." />
<!--- the double ## above is just for escaping a single # - in your DB you would not need ## --->
<cfoutput>#mockDBText#</cfoutput>
<cfset x.a = "quick brown fox" />
<cfset x.b = "lazy dog" />
<cfoutput><br /> #evaluate(de(mockDBText))#</cfoutput>

...但是请注意,使用来自用户输入的任何文本来执行此操作会带来巨大的安全风险-例如,在以下详细说明:https://www.bennadel.com/blog/3861-evaluating-database-records-that-contain-coldfusion-interpolation-expressions-in-adobe-coldfusion-2018.htm

一种更安全的方法是包括您自己的标记以在DB文本内定界变量,然后使用函数来解析这些变量并仅输出已知的安全变量。

,
<cfscript>
mainData = "blah blah blah";
moreData = "more more more";
writeOutput(mainData & moreData);
</cfscript>

<cfoutput>#mainData##moreData#</cfoutput>

或者如果要将moreData插入mainData中:

<cfscript>
newString = Left(mainData,1,5) & moreData & Right(mainData,6,Len(mainData)-5));
writeOutput(newString);
</cfscript>

还有一个注意事项...永远不要使用Evaluate(nonSanitizedUserText),否则您将打开应用程序进行注入攻击。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。