2012-09-17 41 views
0

可能重复:
Calling a variable with a variable in its name - coldfusion?如何在Coldfusion的名称通过变量设置的情况下检索cookie?

对不起,我有点在ColdFusion的一个新手。试图在工作中更新一些遗留代码...

我使用变量在coldfusion中命名了一个cookie。

<cfcookie name="#FORM.cookie_name#" Expires="#FORM.cookie_expires#"> 

如何检查cookie是否未过期?这似乎是崩溃的网页...

<cfif isDefined("cookie.#FORM.cookie_name#")> 

非常感谢。

+3

Seybsen

+0

请发送给我们一个编辑后的错误版本。 –

+0

工作正常!谢谢!如果您将其添加为答案,我会将其标记为正确。 – r00tAcc3ss

回答

4

要检查它是否存在,使用StructKeyExists

StructKeyExists(Cookie,Form.cookie_name) 

要使用的变量,使用括号标记:

Cookie[Form.cookie_name] 


不要忘记两个表单变量和Cookie变量由用户/客户端提交 - 因此必须得到适当的处理(即不要相信它们包含你认为他们所做的事情,因为它不能保证)。



注意,如果你是想用 isDefined形式要做到这一点(虽然有益处的话),就需要编写像这样:

isDefined("Cookie['#Form.cookie_name#']") 

那么这将是评估如Cookie['606ac80d'] - 没有这些单引号,它将是一个无效的变量。

正如雷指出,在Railo和OpenBD,而不是在Adobe ColdFusion的,上面的作品,你需要写:

isDefined("Cookie.#Form.cookie_name#") 

这句法将简单的字母数字变量名工作,但具体可以如果form.cookie_name中包含有.值造成的问题。

+1

Re:* isDefined(“Cookie ['#Form.cookie_name#']”)*该语法对Railo和BlueDragon/OpenBlueDragon有效。但对于Adobe CF,您需要删除方括号,即'IsDefined(“Cookie。#form.cookie_name#”)' – Leigh

+0

Bah,典型的。我很想开始推出一个标准的免责声明_“任何看起来合理的语法都可以在Railo和OpenBD中使用,但是可能或不能在ACF中使用,这取决于Adobe工程师的意愿”_。 :C –

+0

哈哈,我从来没有看到这个决定背后的逻辑。另一个原因是我转而使用'structKeyExists'。 – Leigh

0

希望这有助于:)

<cfcookie name="#form.cookie_name#" Expires="#form.cookie_expires#"> 
<cfif structKeyExists(cookie, form.cookie_name)> 
Cookie 
</cfif> 

类似问题THI s post

相关问题