是否可以使用另一个变量作为会话变量的名称来定义会话变量?在研究如何定义会话变量时,我没有发现任何关于这种情况的信息.
我是新手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)
================================================== =============`
<!--- 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