2012-02-29 82 views
0

我正在嘗試使用if語句來檢查用戶是否已從正確的位置以正確的數據定向到此頁面。

在PHP中,我們將使用 if ($_REQUEST) { ...... }

,但我怎麼能做到這一點ColdFusion的?

+0

不是'$ _REQUEST'總是一個數組(至少爲空)?如果應該總是迴歸真實。 – Shoe 2012-02-29 23:37:27

+0

如果您可以舉一些正確的引用頁面可能是什麼以及正確的數據是什麼樣子的例子,這將會很有幫助。 – 2012-02-29 23:41:30

回答

5

this,$ _REQUEST是:

的關聯數組默認包含$ _GET內容, $ _ POST和$ _COOKIE。

在這種情況下,Coldfusion中沒有相應的功能。 $ _GET將等同於CF的URL範圍。 $ _POST將等同於CF的FORM範圍。 $ _COOKIE將與CF的COOKIE範圍等同。您需要根據您要查找的內容來檢查適當的範圍。

然而,Coldfusion的框架(如Coldbox)爲您管理「請求集合」。

+0

值得注意的是,雖然PHP變量名區分大小寫,但ColdFusion變量名不是。我不知道這是否會影響$ _GET或$ _POST,但它肯定會與$ _COOKIE與ColdFusion COOKIE範圍相關。 – 2012-03-01 00:59:48

+0

大家好!我用PHP修飾過,但已經過去了數年。 – 2012-03-01 01:10:28

4

有了更多的信息,這個答案可能會更完整。

您可以使用CGI.HTTP_REFERER來檢查用戶來自哪裏。例如:

if (CGI.http_referer contains 'www.good-domain.com') { ... do something here ... } 

您需要檢查URL或FORM範圍以檢查數據以查看它是否爲「正確的數據」。

requestIsGood = true; 
requiredKeys = ['keyA','keyB','keyC']; 
for (key in requiredKeys) { 
    if (!structKeyExists(FORM,key) { 
     requestIsGood = false; 
     break; 
    } 
} 

if (requestIsGood) { ... do something here ...} 

最後,在ColdFusion中的URL和表單範圍的區別: - (當數據被公佈在請求主體中使用它檢查的形式範圍),你可以用這樣簡單的東西檢查這些值(CFML)是URL的查詢字符串中的值將被填充到URL範圍。表單發佈的值將存在於FORM範圍中。

該代碼示例應該對Adobe ColdFusion 9+ http://adobe.com/go/coldfusion和開源CFML引擎Railo http://getrailo.org準確。它可能在另一個開源CFML引擎OpenBD http://www.openbluedragon.org/上工作,但我不確定。

希望這些信息對您有所幫助。

+0

一個局部變量,一個數組,3個字符串,一個for()循環,一個變量集合和一個break ... vs ...一個if()語句+ 3x structKeyExists()...當然,後者會是更可讀和更快執行 – 2012-03-01 11:54:46

+0

(指您的第二個示例代碼塊) – 2012-03-01 11:55:13

+0

@MikeCauser總是有改進的空間。我只是在文本框中輸入了這個:) – 2012-03-02 02:28:30