小编use*_*919的帖子

在定义会话变量时,我可以使用变量作为变量名吗?

是否可以使用另一个变量作为会话变量的名称来定义会话变量?在研究如何定义会话变量时,我没有发现任何关于这种情况的信息.

我是新手CFML用户,这是我试图设置的情况.我希望它不会太冗长和混乱.

我在每个页面上都有代码,当给定的站点用户在用户会话期间访问特定页面时,会向我发送电子邮件警报.工作良好.但是,我希望仅在用户一次访问页面时触发该电子邮件警报- 我不关心该用户在该用户会话期间对该页面的其他页面访问.

我需要定义一个对"那个用户/那个页面"组合唯一的会话变量.每当任何用户访问该页面时,我都会查找该变量.如果匹配,则表示用户在该用户会话期间已访问过该页面,并且我不会触发电子邮件警报.

对于"那个用户"部分,我已经为用户从用户登录时定义了一个会话变量(Session.Name).

对于"那个页面"部分,我已经在每个页面的顶部定义了一个唯一的变量 - 例如

<cfset page_filename = 'index.cfm'>
Run Code Online (Sandbox Code Playgroud)

难题:当两个部分之一(page_filename)本身是一个变量时,如何将两个部分(Name和page_filename)组合成一个唯一的会话变量.

到目前为止,我已尝试使用带有Session.Name的page_filename定义"Session.page_alert"

<cfset Session.page_alert = '#page_filename##Session.Name#'>
Run Code Online (Sandbox Code Playgroud)

但是,一旦用户访问另一个页面,这就变得毫无用处,因为#page_filename#部分在每个页面上是不同的,因此唯一的会话变量属于页面而不是前一页面.如果用户返回上一页,则Session变量不再引用它,因此即使用户已经在那里,用户也会再次访问该第一页.

理想情况下,我想做类似的事情

<cfset Session.#page_filename# = '#page_filename##Session.Name#'>
Run Code Online (Sandbox Code Playgroud)

- 这将是一个独特的组合,将持续用户的会话.但是,当我这样做时,CFML barfs,可能是因为我将会话变量定义为变量.我错过了一个明显的解决方案,我想做什么?希望这不会太混乱.非常感谢您提供的任何帮助!

================================================== =============`

<!--- username variable Session.Name is defined upon user login --->

<!--- do a test display for existence of this variable --->
<cfoutput>
<p>SESSION.NAME = #Session.Name#
</cfoutput>
<!--- this part works fine --->

<!--- define page_filename local variable at top of each page --->
<cfset …
Run Code Online (Sandbox Code Playgroud)

coldfusion

1
推荐指数
1
解决办法
104
查看次数

标签 统计

coldfusion ×1