Я работаю над скриптом в течение нескольких недель, настраивая его, как нужно, чтобы отслеживать CGI.script_PATH и CGI.REFERER на старой установке coldfusion, которая имеет более 500 .cfc и. cfm страниц. Я просто попал в мой код. Он не фиксирует имя страницы в переменной CGI.Referer, если референт является папкой. Я уверен, что это имеет какое-то отношение к Coldfusion, автоматически ищущему index.cfm, даже если путь не содержит фактического имени файла.Оценка пути к каталогу Coldfusion для существования файла
Как написать дополнение к моему скрипту, где, если в CGI.Referer нет .cfm, он может искать в каталоге и отображать набор файлов по умолчанию для загрузки или, по крайней мере, поиск вхождения index.cfm или default.cfm?
Вот блок кода обработки REFERER элемент:
<!---Variable declared and set to empty--->
<cfset referer_path_and_file = "">
<cfset referer_path = "">
<cfset referer_file_name = "">
<cfset script_path_and_file = "">
<cfset script_path = "">
<cfset script_file_name = "">
<cfif cgi.HTTP_REFERER neq ''>
<!--- all of this will fail if there is no referer, for instance, if they bookmark the page --->
<!--- cgi.HTTP_REFERER may contain URL parameters, so let's strip those --->
<cfset referer_path_and_file = ListFirst(CGI.HTTP_REFERER, "?")>
<!--- now let's get just the path, stripping out the web server info --->
<cfset referer_path = ListDeleteAt(CGI.HTTP_REFERER, ListLen(CGI.HTTP_REFERER, "/"), "/")>
<cfset referer_path = ReplaceNoCase(referer_path, "https", "", "All")>
<cfset referer_path = ReplaceNoCase(referer_path, "http", "", "All")>
<cfset referer_path = ReplaceNoCase(referer_path, "://machine1.fss.com", "", "All")>
<cfset referer_path = ReplaceNoCase(referer_path, "://www_dev.fss.com", "", "All")>
<cfset referer_path = ReplaceNoCase(referer_path, "://www.fss.com", "", "All")>
<cfset referer_path = ReplaceNoCase(referer_path, "://10.11.2.60/", "", "All")>
<cfset referer_path = referer_path & "/">
<cfset referer_path = ReplaceNoCase(referer_path, "/", "\", "All")>
<!--- now let's remove everything but the file name --->
<cfset referer_file_name = ListLast(referer_path_and_file, "/")>
<!--- and that leaves us with these variables set --->
<!--- referer_path_and_file = "#referer_path_and_file#"<br />
referer_path = "#referer_path#"<br />
referer_file_name = "#referer_file_name#"<br />
<br />--->
</cfif>
<!---Directory Stripping And Modifier Block Goes Here--->
<!---Set CGI System Variables--->
<cfset currentHeader = CGI.HTTP_REFERER >
<cfset currentScriptPage = CGI.SCRIPT_NAME >
<!---Set currentScriptPage as command line directory string and delcare new variable "reverseScriptPage"--->
<cfset reverseScriptPage = ReReplace(#currentScriptPage#, "/", "\","ALL")>
<!---Set reverseScriptPage value as newly format command line directory structure--->
<cfset newScriptPage = ListSetAt(#reverseScriptPage#, 1, "#reverseScriptPage#") >
Код просто набрасывает CGI-скрипт и переменные-рефертеры из их ссылок на веб-страницы http, а затем разбивает часть структуры каталогов и вставляет имя файла .cfm и исходную структуру каталога в таблицу DB, но не до того, как он изменит/символы на \, потому что они хотят настроить сценарий, который будет проходить через таблицу и увидеть что-то вроде «\ admin \ controls \» и автоматически создать эти каталоги, а затем скопировать страницу example.cfm в этот каталог. Цель состоит в том, чтобы: 1.) определить, какой из 500 файлов cfc/cfm все еще используется в приложении, затем скопировать их и структуру их каталогов в новое место и перепроектировать эти файлы в новой технологии, которая не является Coldfusion.
Обновление: у меня возникает проблема с моим кодом. Когда я тестирую его, он работает хорошо, обрезая часть домена http. Однако, как только он работает под веб-сервером, он не усекает URL-адрес, несмотря на то, что для этого существует метод ReplaceNoCase:
Под корнем веб-сайта в корне wwwroot он хорошо работает, давая этот вывод: refererPage: testFiles.cfm refererPath = testCodes \ MVC
Под живой сайт я получаю это: refererPage: client_display refererPath: **: \ dev.fss.com \ admin_area ** , несмотря на эту строку в своем коде:
Любая идея, почему?
Просьба уточнить. В первом абзаце вы говорите о области cgi, а во втором - в области URL. –
Вы отслеживаете реальных пользователей? CGI.HTTP_REFERER устанавливается только после ссылки. Он также может быть заблокирован такими вещами, как Norton Internet Security, поэтому вы не можете гарантировать, что он будет существовать. HTTP_REFERER не должен зависеть от запуска файла индекса каталога по умолчанию. –
_ «Я уверен, что это имеет какое-то отношение к Coldfusion, автоматически ищущему index.cfm, даже если путь не содержит фактического имени файла». Больше похоже на список файлов по умолчанию для веб-сервера. –