2012-02-29 7 views
0

ifステートメントを使用して、正しい場所の正しいデータでこのページにユーザーが誘導されているかどうかを確認しようとしています。 PHPで

我々は if ($_REQUEST) { ...... }

を使用しますが、私は、ColdFusionでそれをどのように行うことができますか?

+0

'$ _REQUEST'は常に配列です(少なくとも空ではありませんか?)。それはいつも真実を返すべきです。 – Shoe

+0

正しい参照ページとは何か、正しいデータがどのようなものかを示す例があれば役に立ちます。 –

答えて

5

thisによると、$ _REQUESTは次のとおりです。

、デフォルトでは$ _GETの内容、 $ _POSTや$ _COOKIEが含まれていることを連想配列。

この場合、Coldfusionには同等の機能はありません。 $ _GETはCFのURLスコープと同等です。 $ _POSTはCFのFORMスコープに相当します。 $ _COOKIEはCFのCOOKIEスコープと同等です。あなたは探しているものに応じて適切な範囲を確認する必要があります。

しかし、Coldboxのように、「リクエストコレクション」を管理するColdboxのようなフレームワークがあります。

+0

PHP変数名は大文字と小文字を区別しますが、ColdFusionの変数名は大文字と小文字を区別します。これが$ _GETか$ _POSTで問題になるかどうかはわかりませんが、$ _COOKIEとColdFusion COOKIEのスコープは違います。 –

+0

デビッドを知っておきたい!私はPHPを試してみたが、それは何年も経っている。 –

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とFORMスコープの違い: - (データは要求の本文に掲載された際に使用されるフォームのスコープをチェックする)あなたはこのような単純なもので、これらの値を検査することができます(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()ループ、変数セット、およびブレーク... vs ...単一のif()ステートメント+ 3x structKeyExists()...必ず後者が両方より読みやすく、実行が速い –

+0

(2番目のサンプルコードブ​​ロックを参照) –

+0

@MikeCauser常に改善の余地があります。私はちょうどこの権利をテキストボックスに入力しました:) –