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



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

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

我用变量在冷聚变中命名了一个饼干。

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

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

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

非常感谢。

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

StructKeyExists(Cookie,Form.cookie_name)

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

Cookie[Form.cookie_name]


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



请注意,如果您确实想使用 isDefined 表单来执行此操作(尽管它有好处),则需要这样编写:
isDefined("Cookie['#Form.cookie_name#']")

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

正如Leigh所指出的,上述方法适用于Railo和OpenBD,但在Adobe ColdFusion中不起作用,您需要在其中编写:

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

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

希望这对:)有所帮助

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

与这篇文章类似的问题

最新更新