3

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

抱歉,我是 Coldfusion 的新手。试图在工作中更新一些遗留代码......

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

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

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

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

非常感谢。

4

2 回答 2

8

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

StructKeyExists(Cookie,Form.cookie_name)

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

Cookie[Form.cookie_name]


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



请注意,如果您确实想使用isDefined表单来执行此操作(尽管这样做有好处),则需要这样编写:

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

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

正如 Leigh 所指出的,上述内容在 Railo 和 OpenBD 中有效,但在 Adob​​e ColdFusion 中无效,您需要在其中编写:

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

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

于 2012-09-17T14:49:36.553 回答
-1

希望这可以帮助 :)

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

与此帖子类似的问题

于 2012-09-17T14:54:47.050 回答