【问题标题】:Display Another Variable Inside a CFOUTPUT在 CFOUTPUT 中显示另一个变量
【发布时间】:2020-10-11 18:32:37
【问题描述】:

我有一个长文本格式的便条推送给人们。 所以显示是:

 <cfoutput>
 #maindata#
 </cfoutput>

假设数据是一堆“等等等等,还有更多的文本数据,等等”,它们正在正确输出。

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

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

  #set.newnote#

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

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

我运气不好。这是可能的还是我需要中断输出以添加额外的输出。

【问题讨论】:

  • add an additional variable note inside the "LongText" 是什么意思?

标签: coldfusion coldfusion-2016


【解决方案1】:

我假设您之所以问这个问题是因为您想将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 文本中包含您自己的标记来分隔变量,然后使用函数解析这些并仅输出已知的安全变量。

【讨论】:

    【解决方案2】:
    <cfscript>
    mainData = "blah blah blah";
    moreData = "more more more";
    writeOutput(mainData & moreData);
    </cfscript>
    

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

    或者如果你想在 mainData 中插入更多数据:

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

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

    【讨论】:

    • 第二个例子不需要做字符串拼接,也可以&lt;cfoutput&gt;#maindata# #moreData#&lt;/cfoutrput&gt;
    • 不是我要找的。我只用一个单独的输出来修复它。但事实并非如此。它正在从数据库“Long Text Type”中提取文本数据。在该数据中,我试图放入来自该数据库文本提取的附加#moredata#。它不显示变量字符串,而只是将#moredata# 显示为文本。我觉得我做不到。
    • 我不清楚您要解决的问题是什么。长文本类型将被 CF 以与任何文本相同的方式处理。你写道:我想做的是在“LongText”中添加一个额外的变量注释......这告诉我你需要创建一个新字符串......所以也许你需要使用字符串函数的组合来创建你的新字符串?
    猜你喜欢
    • 1970-01-01
    • 2013-08-02
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2020-04-28
    • 2022-08-16
    • 1970-01-01
    相关资源
    最近更新 更多