2013-11-01 58 views
0

由於我使用的系統具有登錄和註銷功能,因此當我登錄到系統時,我處於Session內部。我是Session的新手,我的問題是任何變量及其在任何Coldfusion頁面中定義的值,我是否可以在任何頁面上使用它?Coldfusion中的會話

例如,同時通過我的系統的代碼去,我碰到下面的行每一個和每一個CFML頁面傳來:

<cfparam name="INPUTID" default="0"> 

再後來就某處頁面,我已經看到了這個變量像#INPUTId#一樣使用。

請澄清

+3

上面的代碼與會話無關。它只是設置一個變量的默認值。查看['cfparam'](http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec09af4-7fd7.html)以及[範圍類型](http:// help)上的文檔。 adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec09af4-7ff1.html)。如上所示,非顯式變量通常默認放置在'變量'範圍內。 – Leigh

+0

我建議最小化會話變量的使用。原因在於,對於現代瀏覽器,用戶可能會以您未預料到的方式更改這些內容。 –

+0

@DanBracuk ColdFusion中的會話變量可能與你所想的不同 –

回答

4

要回答這個問題:「什麼變量,它的價值我在任何ColdFusion頁定義,我將能夠使用它的任何頁面上」 ......那要看。

如果您設置會話變量,例如<cfset session.foo = "bar" >,那麼你可以在任何頁面上調用#session.foo#,因爲它將存儲在用戶的會話中。

但是,如果你只是設置一個值,例如<cfset foo="bar" >那麼它將在「變量」範圍內結束,並且僅在該頁面或請求中可用。 (就此而言,CF具有特定的「請求」範圍,例如request.foo,這是爲了這個目的,在相同請求或頁面視圖中設置值的位置之後的任何代碼中都可用)。

因此,如果您想要設置可在其他頁面上使用的值,請使用會話。但要小心,在嘗試從用戶會話中調用它之前,您還需要使用cfparam來設置默認值,或使用structKeyExists()來檢查該值,因爲除非已設置該值,否則該值可能不存在。否則,對於在同一頁面中使用的值,請使用'請求'範圍,或者查看其他範圍的CF文檔,例如變量,本地等。

+0

嗯,即使我在想,它應該有'session.foo'等東西,但它仍然沒有任何東西,它從某處。無論如何,謝謝,我正在計算這裏發生了什麼,因爲我的文件中包含了大量的cfc。再次感謝。 – Jack

+0

通常情況下,某些東西存在並且是空白的。那樣你就不必測試存在和非空白 –

+0

另一方面,如果某件事情存在而且不存在,那可能意味着該頁面沒有以正確的方式被訪問並且應該採取適當的行動。 –