【问题标题】:Is ColdFusion Scripted Linearly? Why this error?ColdFusion 是线性脚本吗?为什么会出现这个错误?
【发布时间】:2010-07-15 17:24:20
【问题描述】:

我收到了这个错误

Element CUSTOMERID is undefined in CLIENT. 
D:\Inetpub\wwwsitecom\wwwroot\rders.cfm:296

在以以下代码开头的页面上:

<cfif NOT CreateObject("component","User.User").IsLoggedIn()>
    <script type="text/javascript">
        window.location.href='/index.cfm';
    </script>
    <cfabort>
</cfif>

<cfif NOT IsDefined("client.customerid")>
    <cfparam name="client.customerid" default="0">
    <script type="text/javascript">
    alert("We're sorry.");
    window.location.href="/logout.cfm";
    </script>
    <cfabort>
</cfif>

在第 296 行

<cfinvoke component="Account" method="getAccessInfo" returnvariable="getInfo">
  <cfinvokeargument name="customerid" value="#client.CustomerID#">
</cfinvoke>

IsLoggedIn 函数有这段代码

<cfif NOT StructKeyExists(client,"customerid")>
  <cfset strIsLoggedIn = 0>
</cfif>

如果 ColdFusion 以线性方式处理脚本,如果不处理页面的第一部分,它如何到达第 296 行未定义的 client.customerid?

如果 ColdFusion 不能线性处理脚本,我该如何防止这个错误?

【问题讨论】:

  • 可能需要使用您的一般调试技能来解决此问题。 CFDUMP 是你的朋友。
  • Henry,谢谢,有一个在错误时通过电子邮件发送的转储。它包括客户端范围的列表。整个客户端范围是空的。客户端里什么都没有!这也很奇怪,因为在第 296 行之前出现了对其他客户端变量的引用,它们同样受到错误的影响。
  • 你可以试试: 吗?看看有没有效果
  • 我认为顶部代码和第 296 行之间没有任何东西会以某种方式改变 ApplicationName,对吧?
  • 您也可以尝试将 cfparam 移出 - 及以上 - not isdefined 条件。这就是cfparam 的意义所在。然后更改条件以检查 client.customerid eq 0。也许这种组合在某种程度上与客户端变量发生了冲突。

标签: coldfusion


【解决方案1】:

首先,我会检查您是否没有在某处创建名为client 的变量(可能在&lt;cfoutput&gt;&lt;cfloop&gt; 标记中的隐式范围内)。由于 CF 是一种后期绑定语言,它可以改变语义,并且对 client.CustomerID 的引用将在您的本地 client 变量中查找,而不是在 Client 范围内。

其次,如果您想进行重定向,,请使用&lt;cflocation&gt;,而不是进行这种疯狂的 JavaScript 重定向。请记住,JavaScript 是在客户端执行的,浏览器完全有可能(甚至不那么罕见)禁用 JavaScript。 &lt;cflocation&gt; 导致发送 HTTP 3xx 响应,无论是否启用 JavaScript,它都可以在任何实现 HTTP 的浏览器中正常工作。它也更加安全,因为在重定向之前不会有部分页面被刷新到客户端。

【讨论】:

    【解决方案2】:

    确保您在 cfide 中正确设置了客户端变量,并检查它们是否已在您的 Application.cfc 文件中启用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 2013-12-30
      相关资源
      最近更新 更多