【问题标题】:Session in ColdfusionColdfusion 会议
【发布时间】:2013-11-01 21:44:14
【问题描述】:

由于我使用的系统具有登录和注销功能,所以当我登录系统时,我在会话中。我是 Session 新手,我的问题是我在任何 Coldfusion 页面中定义的任何变量及其值,我可以在任何页面上使用它吗?

例如,在浏览我的系统代码时,我在每个 CFML 页面都遇到了以下一行:

<cfparam name="INPUTID" default="0">

然后在页面的某个地方,我看到这个变量像 #INPUTId# 一样被使用。

请澄清

【问题讨论】:

  • 上面那段代码与会话无关。它只是为变量设置默认值。查看cfparamscope types 上的文档。无作用域的变量,和上面的一样,通常默认放在variables 作用域中。
  • 我建议尽量减少会话变量的使用。原因是在现代浏览器中,用户可能会以您没有预料到的方式更改这些内容。
  • @DanBracuk ColdFusion 中的会话变量可能与您的想法不同

标签: session coldfusion


【解决方案1】:

要回答“我在任何coldfusion页面中定义的任何变量及其值,我是否可以在任何页面上使用它”这个问题......这取决于。

如果您设置会话变量,例如&lt;cfset session.foo = "bar" &gt; 然后您可以在任何页面上调用#session.foo#,因为它将存储在用户的会话中。

但是,如果您只是设置一个值,例如&lt;cfset foo="bar" &gt; 然后它将最终在“变量”范围内,并且仅在该页面或请求中可用。 (请注意,CF 有一个特定的“请求”范围,例如request.foo,用于此目的,可在同一请求或页面视图中设置值的位置之后的任何代码中使用)。

因此,如果您想设置可以在其他页面上使用的值,请使用会话。但请注意,在尝试从用户会话调用它之前,您还需要使用cfparam 设置默认值,或使用structKeyExists() 检查该值,因为该值可能不存在,除非它已经设置.否则,对于同一页面中使用的值,请使用“请求”范围,或查看其他范围的 CF 文档,例如变量、本地等。

【讨论】:

  • 嗯,即使我也在想它应该有类似session.foo 等的东西,但它仍然没有任何东西,它从某个地方获得了价值。无论如何,谢谢,我正在弄清楚这里发生了什么,因为我的文件中包含了很多 cfc。再次感谢。
  • 某些东西存在并且为空白通常更好。这样您就不必测试存在性和非空白性
  • 另一方面,如果某些东西应该存在但不存在,这可能意味着该页面没有以正确的方式访问,应该采取适当的措施。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多