Coldfusion中的会话
由于我使用的系统具有登录和注销功能,因此当我登录到系统时,我处于Session内部。 我是Session的新手,我的问题是任何变量及其在任何Coldfusion页面中定义的值,我是否可以在任何页面上使用它?
例如,在浏览我的系统代码的同时,我在每一个CFML页面上看到以下一行:
<cfparam name="INPUTID" default="0">
然后在页面的某个地方,我已经看到这个变量正在被使用,如#INPUTId#
。
请澄清
要回答这个问题:“无论我在任何Coldfusion页面中定义的变量及其价值,我都可以在任何页面上使用它”......这取决于。
如果你设置了一个会话变量,例如<cfset session.foo = "bar" >
那么你可以在任何页面上调用#session.foo#
,因为它将存储在用户的会话中。
但是,如果您只需设置一个值,例如<cfset foo="bar" >
那么它将以'变量'作用域结束,并且仅在该页面或请求中可用。 (就此而言,CF具有特定的“请求”范围,例如request.foo
,这是为此目的提供的,可以在设置值的位置之后的任何代码中在相同的请求或页面视图中使用)。
因此,如果您想设置可在其他页面上使用的值,请使用会话。 但是要小心,您还需要使用cfparam
来设置默认值,或者在尝试从用户会话中调用它之前使用structKeyExists()
来检查值,因为除非已经设置该值,否则该值可能不存在。 否则,对于同一页面中使用的值,请使用'请求'范围,或者查看其他范围的CF文档,例如变量,本地等。
下一篇: ColdFusion 8 to ColdFusion 10 Migration: CFloginUser Not Working As Expected