CF9:这个评估报告的评估是什么?

HPW*_*PWD 5 coldfusion cfdump coldfusion-9 cfml

拜托,我被困住,需要一双清新的眼睛.

我正在和别人的意大利面条代码一起工作,这些代码已经不在了,并且正在弄清楚他们正在评估什么.

<cfset surveyCount = 0>
<cfloop query="surveys">
    <cfif evaluate("defaultReport" & ID)>
        <cfset surveyCount = surveyCount + 1>
    </cfif>
</cfloop>  
Run Code Online (Sandbox Code Playgroud)

在查询转储中,我看到9条记录,这是我所期待的但是因为评估失败,所以surveyCount没有递增.我没有看到任何列defaultReport.在我与CF合作的15年中,我总是避免评估(),现在当我需要分析它时,我完全失去了.有人可以提供任何指导吗?

添加了CFDump图像(为了隐私和安全性,已删除了一些列名称): 在此输入图像描述

更新I:这个文件有很多cfinclude语句和很少的代码格式.结果,我忽略了一些cfinclude语句.我找到了以下内容.我仍然在寻找,但想在我挖掘时记录这一点.

<cfloop query="surveys"> <cfscript> variables["defaultReport" & ID] = evaluate(thisAssociation & "Price"); </cfscript> </cfloop>

更新II:转储变量范围,我确实确认了我正在寻找的变量(找到我在UPDATE中发布的查询,我也帮助了).:)
在此输入图像描述

Jam*_*ler 5

您需要在查询之外查找变量.此变量的名称为default#ID#.可能会被称为.

variables.default#ID#
form.default#ID#
url.default#ID#
request.default#ID#
attributes.default#ID#
Run Code Online (Sandbox Code Playgroud)

等等

基本上ColdFusion将遍历每个范围,直到找到某些东西.(不,这不是一个好方法)

如果你必须清理它,我建议不要使用这种模棱两可的方法.简而言之,没有真正的方法可以知道它正在评估什么.

  • 根据您的cfdump,ID是数字.所以我建议寻找`defaultReport`.把它想象成一个错误的结构. (4认同)
  • ...如果你找不到以"defaultReport"开头的硬编码名称,可能会求助于转储各种范围(变量,url等),至少找出它所在的范围.当然希望它不是动态定义,就像在一些旧的应用程序中,即`<cfset"#thing ## OtherID#"="blah">`: - / (4认同)

Ale*_*ban 5

他们想要做的是增加,surveyCount但只有在这个事情:evaluate("defaultReport" & ID)评估到true.

从查询转储图片它看起来像ID是相同的数字144,145等...

在这种情况下,你能想到的evaluate("defaultReport" & ID),就像这样defaultReport144,defaultReport145等...(这是在代码的某个地方设置的变量).

所以代码:

<cfif evaluate("defaultReport" & ID)>
    <cfset surveyCount = surveyCount + 1>
</cfif>
Run Code Online (Sandbox Code Playgroud)

成为(对于ID为144,查询循环中的第一个)

<cfif defaultReport144>
    <cfset surveyCount = surveyCount + 1>
</cfif>
Run Code Online (Sandbox Code Playgroud)

等等...其他ID

因此,搜索你对其中类似变量的代码defaultReport144,defaultReport145等...都设置为true or false (0 or 1).

就像是:

<cfset defaultReport144 = true />

或者他们使用一些评估为真或假的表达式,例如:

<cfset defaultReport144 = [some expression] />

如果找不到,那么可能会在defaultReport...设置这些变量的位置更改或删除代码.

ColdFusion evaluate()文档:https :
//help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f4e.html

  • "设置为true或false(0或1)." ...它也可以是任何值为true的值,就像任何数字<> 0一样. (3认同)
  • "任何数字<> 0">>或"<>"假""或"<>"否"".;-) (2认同)
  • @Alex它将成为`<cfif evaluate(defaultReport144)> ...`,它将归结为`<cfif Yes ...`或`<cfif No ...`. (2认同)