如何在Coldfusion中检索名称是通过变量设置的cookie?

r00*_*3ss 1 cookies coldfusion

可能重复:
调用名称中带变量的变量 - coldfusion?

对不起,我是Coldfusion的新手.试图在工作中更新一些遗留代码......

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

<cfcookie name="#FORM.cookie_name#" Expires="#FORM.cookie_expires#">
Run Code Online (Sandbox Code Playgroud)

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

<cfif isDefined("cookie.#FORM.cookie_name#")>
Run Code Online (Sandbox Code Playgroud)

非常感谢.

Pet*_*ton 7

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

StructKeyExists(Cookie,Form.cookie_name)
Run Code Online (Sandbox Code Playgroud)

要使用该变量,请使用括号表示法:

Cookie[Form.cookie_name]
Run Code Online (Sandbox Code Playgroud)


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



注意,如果你确实想使用isDefined表单来执行此操作(虽然它有好处),它需要像这样编写:

isDefined("Cookie['#Form.cookie_name#']")
Run Code Online (Sandbox Code Playgroud)

然后将其评估为Cookie['606ac80d']- 如果没有那些单引号,它将是无效变量.

正如Leigh所指出的,上面的内容适用于Railo和OpenBD,但不适用于需要编写的Adobe ColdFusion:

isDefined("Cookie.#Form.cookie_name#")
Run Code Online (Sandbox Code Playgroud)

此语法适用于简单的字母数字变量名称,但如果form.cookie_name包含带有.in 的值,则可能会导致问题.