2012-02-29 2 views
0

Я пытаюсь использовать оператор if, чтобы проверить, был ли пользователь перенаправлен на эту страницу с правильного местоположения с правильными данными.

в PHP мы будем использовать if ($_REQUEST) { ...... }

, но как я могу сделать это в ColdFusion?

+0

Не '$ _REQUEST' всегда массив (пустой как минимум)? Это, если должно возвращаться всегда верно. – Shoe

+0

Было бы полезно, если бы вы могли привести несколько примеров того, что может быть правильной ссылочной страницей и какими должны быть правильные данные. –

ответ

5

Согласно this, $ _REQUEST является:

ассоциативный массив, который по умолчанию содержит содержимое $ _GET, $ _POST и $ _COOKIE.

В этом случае в Coldfusion нет эквивалента. $ _GET будет эквивалентен области URL-адреса CF. Значение $ _POST будет эквивалентно области FORM CF. $ _COOKIE будет эквивалентен объему COOKIE CF. Вам нужно будет проверить соответствующую область в зависимости от того, что вы ищете.

Существуют, однако, рамки для Coldfusion, такие как 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 ...} 

Наконец, разница между URL и FORM сферы в ColdFusion (CFML) заключается в том, что значения в запросе url будут заполнены в области URL. Значения, отправленные формой, будут существовать в области FORM.

Примеры кода должны быть точными для Adobe ColdFusion 9+ http://adobe.com/go/coldfusion и двигателя CFML с открытым исходным кодом Railo http://getrailo.org. Он может работать на другом двигателе CFML с открытым исходным кодом OpenBD http://www.openbluedragon.org/, но я не уверен.

Надеюсь, эта информация вам поможет.

+0

Локальная переменная, Array, 3 строки, цикл for(), набор переменных и разрыв ... vs ... один оператор if() + 3x structKeyExists() ... конечно, что последнее будет одновременно более читаемым и более быстрым для выполнения –

+0

(ссылаясь на ваш второй примерный блок кода) –

+0

@MikeCauser Всегда для улучшения. Я просто набрал это право в текстовом поле :) –