2012-09-17 37 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

相關問題