2012-02-29 74 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