2013-09-24 2 views
1

Я просматриваю код coldfusion и встречаю следующую информацию. Я не понял его. Мои вопросы заключаются в следующих:понимание ColdFusion FindNoCase

КОД:

<cfif FINDNOCASE("xyz.seta", "#CGI.SERVER_NAME#") GT 0 > 

    <cfset PublicPath = "abcxyz/NEW_abc/Public"> 
    <cfset SessionPath = "abcxyz/NEW_abc/Session"> 

Я понимаю, что FINDNOCASE используется, чтобы найти первое вхождение подстроки в строке, с указанной начальной позиции.

Function Syntax: FindNoCase(substring, string [, start ]) 

1) Таким образом, в моем случае, xyz.seta подстрока ищется начиная с "# CGI.SERVER_NAME #"? Я здесь смущен?

2) Вопрос касается PublicPath и SessionPath определены:

Когда я проверил сервер (после входа в нее с помощью VNC Viewer), только папки, которые видны мне общедоступны и Session. Где я могу найти путь до него? Пожалуйста, уточните или дайте мне знать, если мне нужно изучить что-то еще, прежде чем задавать такой вопрос.

Благодаря

+0

Я думаю, вам нужно уточнить вторую часть вопроса. –

+0

Поскольку 'CGI.Server_Name' является переменной ColdFusion, вам не нужно обертывать ее в' '# #" 'в свой' '. Это будет одно и то же: ''. См. Http://cfmlblog.adamcameron.me/2013/09/when-to-use-pound-signs.html – duncan

+0

У вас есть. Это не имеет значения, чтобы использовать знак фунта в моем случае тогда. Спасибо, что указали это. – Tan

ответ

6

Вы правильно о своем первом предположении. FINDNOCASE вернется индекс начала подстроки. Я думаю, что индексы CF основаны на основах (не на основе 0). Таким образом, если строка "xyz.seta" существует в переменной #CGI.SERVERNAME#, возвращаемое значение всегда будет больше нуля, а содержимое CFIF.

Об переменных PublicPath и SessionPath. Эти переменные являются переменными страницы, поскольку они не определены каким-либо другим обозначением области (например, сеансом или приложением). Они существуют только при обработке этой страницы. Если это указано в приложении Application.cfm, он будет выполняться каждый раз, когда вызывается этот файл Application.cfm. Значения переменных устанавливаются в пути по отношению к текущему каталогу. Если вы хотите, чтобы они были абсолютными, добавьте косую черту перед строковыми литералами (например, "/abcxyz/NEW_abc/Public"). Это сделает их абсолютными путями из каталога документов веб-сервера. Путь веб-сервера зависит от ОС и ОС.

+0

Спасибо за ответ! – Tan

5

Я понятия не имею, что ваш второй вопрос даже просят, не говоря уже ответ, но я могу ответить на первый.

Вы неправильно читаете документы (достаточно ясно, я думал) для findNoCase().

Синтаксис функции: FindNoCase(substring, string [, start ])

Код: FINDNOCASE("xyz.seta", "#CGI.SERVER_NAME#")

Так xyz.seta является substring и CGI.SERVER_NAME является строка. И необязательный атрибут start не указан, поэтому подразумевается, что он равен 1, то есть: начало строки.

Так код ищет xyz.seta в пределах стоимости CGI.SERVER_NAME (и возвращает позицию, в которой он находится, или ноль, если не найден.

+0

Спасибо за ответ Адам! Я думаю, что на мой второй вопрос ответили другие люди. – Tan

+1

Не беспокойтесь. Я все еще - для жизни меня - не могу получить от того, что вы написали во втором вопросе, до ответа, предоставленного Джозефом. Я не воспринимаю это как обвинительное заключение (поскольку Лэнс, казалось, указывал, что я предлагаю), поскольку для общения требуется два: я просто не получил то, что вы просили. К счастью, другие сделали! –

+0

Нет жалоб Адам. Еще раз спасибо. – Tan

2

Это довольно простая инструкция конфигурации.

Если адрес, к которому осуществляется доступ (CGI.server_name), по крайней мере, содержит домен xyx.seta, а затем эти две переменные, PublicPath и SessionPath, являются этими двумя значениями.

Я предполагаю, что есть другое, которое говорит, что пути должны быть двух разных значений.

Если вы посмотрите на сервере, где размещается xyz.seta, вы должны найти эти физические пути к файлу.

Это действительно так. Ни больше ни меньше.

Возможно, вы захотите использовать cfdump и cfabort для umm ... выгрузить содержимое области CGI и области переменных, чтобы увидеть, что там и что задается. Используйте cfabort, чтобы остановить обработку сразу после cfdump.

Это поможет вам понять, какие переменные доступны вам и что делает код выше.

+0

Спасибо за ответ Стивен! – Tan

1
FindNoCase(substring, string [, start ]) 

синтаксис, где «начать» является необязательным параметром, который не прошел здесь. Подстрока «xyz.seta» осуществляется поиск в «CGI.SCRIPTNAME». Функция findnocase возвращает 0, если совпадение не найдено или положительное число, если найдено (возвращаемое значение является начальным индексом подстроки в строке, а индекс начинается с 1, а не 0). Таким образом, заявление может быть как

<cfif FINDNOCASE("xyz.seta", "#CGI.SERVER_NAME#")> 

как возвращаемое значение будет положительным, если совпадения найдены