coldfusion 8 - Stripping Out the File Name in the URL -
i'm working on final version of script i've been working on week or so. got working liking except last 1 variable finalscriptpath maps table columnscriptpath, strip page name out of url path path "www.example.com/products/2015/example.cfm render "products\2015" folder structure. see included snip.
here code far:
!---function named endrequestfunc testing safely on cf server---> <!---rename function onrequeststart , place in application.cfm file before running live---> <cffunction name="endrequestfunc" access="public" returntype="string"> <!---variable declared , set 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 ''> <!--- of fail if there no referer, instance, if bookmark page ---> <!--- cgi.http_referer may contain url parameters, let's strip ---> <cfset referer_path_and_file = listfirst(cgi.http_referer, "?")> <!--- let's path, stripping out 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")> <!--- let's remove file name ---> <cfset referer_file_name = listlast(referer_path_and_file, "/")> <!--- , leaves 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> <!--- cgi.script_name not include url parameters ---> <cfset script_path_and_file = listfirst(cgi.script_name, "\")> <!--- let's path, stripping out web server info ---> <cfset script_path = getdirectoryfrompath(getcurrenttemplatepath())> <cfset script_path = replacenocase(script_path, "c:\inetpub\wwwroot\clients\fss.com\www_dev", "", "all")> <cfset script_path = replacenocase(script_path, "c:\inetpub\wwwroot\clients\fss.com\www", "", "all")> <!--- let's remove file name ---> <cfset script_file_name = listlast(script_path_and_file, "/")> <!--- , leaves these variables set---> <!---script_path_and_file = "#script_path_and_file#"<br /> script_path = "#script_path#"<br /> script_file_name = "#script_file_name#"<br />---> <!---<!---cfc test query---> <cfquery name="qrytest" datasource="fss_dev" > insert tblcfmpagerequest(pagename) values ('mypage.cfm') </cfquery>---> <!---directory stripping , modifier block goes here---> <!---set cgi system variables---> <cfset currentheader = cgi.http_referer > <cfset currentscriptpage = cgi.script_name > <!---set currentscriptpage command line directory string , delcare new variable "reversescriptpage"---> <cfset reversescriptpage = rereplace(#currentscriptpage#, "/", "\","all")> <!---set reversescriptpage value newly format command line directory structure---> <cfset newscriptpage = listsetat(#reversescriptpage#, 1, "#reversescriptpage#") > <cfset lastscriptpage = listfirst(#newscriptpage#, "/") > <!---added 5/11/2015---> <cfset finalscriptpage = listsetat(#lastscriptpage#, 1, "#lastscriptpage#") > <cfset finalscriptpath = rereplace(#finalscriptpage#, "/", "\","all") > <!---cgi.http_header formatting block---> <!---this block retrieves http header value, strips http formatting---> <!---currentheader variable truncated listlast assigned variable headerfilename---> <cfset headerfilename = listlast(#currentheader#,"/")> <!---currentheader url string has "/" replaced "\" characters set variable reverseheaderurl---> <cfset reverseheaderurl = rereplace(#currentheader#, "/", "\","all")> <!---reverseheaderurl stripped of known http type formattings , ip formattings---> <cfif cgi.http_referer neq ''> <cfset reverseheaderurl = listdeleteat(cgi.http_referer, listlen(cgi.http_referer, "/"), "/")> <cfset reverseheaderurl = replacenocase(reverseheaderurl, "https", "", "all")> <cfset reverseheaderurl = replacenocase(reverseheaderurl, "http", "", "all")> <cfset reverseheaderurl = replacenocase(reverseheaderurl, "://machine1.fss.com", "", "all")> <cfset reverseheaderurl = replacenocase(reverseheaderurl, "://www_dev.fss.com", "", "all")> <cfset reverseheaderurl = replacenocase(reverseheaderurl, "://www.fss.com", "", "all") > <cfset reverseheaderurl = replacenocase(reverseheaderurl, "://machine1.fss.com", "", "all")> <cfset reverseheaderurl = replacenocase(reverseheaderurl, "://10.11.2.60/", "", "all")> <cfset reverseheaderurl = replacenocase(reverseheaderurl, ":\\dev.fss.com\", "", "all")> <!---added line 5/11/2015---> <!---the end result formatted c:\\ command line format , stored in new variable newheaderurl---> <cfset newheaderurl = listsetat(#reverseheaderurl#, 1, "#reverseheaderurl#") > <cfset finalheaderurl = rereplace(#newheaderurl#, "/", "\","all")> </cfif> <!---queries table requested record---> <cfquery name="qrygetpagerecord" datasource="fss_dev" dbname="fss_dev"> select referrerpage tblcfmpagerequest referrerpage = '#referer_file_name#' , scriptname = '#script_file_name#' </cfquery> <!---conditional check record count equal 0---> <cfif qrygetpagerecord.recordcount eq 0> <!---<cfset httpreferer = listlast('http://www.fss.com/index.cfm?uid=testvalue',"/")> <cfset listfirst(httpreferer,"?")>---> <!---variable declared scriptname , set equal cgi.script_name ---> <!---value truncated actual file name through function listlast() ---> <cfquery name="setnewrecord" datasource="fss_dev" dbname="fss_dev"> insert tblcfmpagerequest (referrerpage, referrerpath, scriptname, scriptpath) values (<cfqueryparam cfsqltype="cf_sql_varchar" value="#referer_file_name#">, <cfqueryparam cfsqltype="cf_sql_varchar" value="#finalheaderurl#">, <cfqueryparam cfsqltype="cf_sql_varchar" value="#script_file_name#">, <cfqueryparam cfsqltype="cf_sql_varchar" value="#finalscriptpath#">) </cfquery> </cfif> </cffunction>
found solution after trial , error working code block in particular. below solution worked strip out file name, leaving path.
<cfif cgi.path_info neq ''> <cfset script_path_and_file = listfirst(cgi.path_info, "?")> <cfset script_path = listdeleteat(cgi.path_info, listlen(cgi.path_info, "/"), "/")> <cfset script_path = replacenocase(script_path, "https", "", "all")> <cfset script_path = replacenocase(script_path, "http", "", "all")> <cfset script_path = replacenocase(script_path, "://machine1.fss.com", "", "all")> <cfset script_path = replacenocase(script_path, "://www_dev.fss.com", "", "all")> <cfset script_path = replacenocase(script_path, "://www.fss.com", "", "all")> <cfset script_path = replacenocase(script_path, "://10.11.2.60/", "", "all")> <cfset script_path = script_path & "/"> <cfset script_path = replacenocase(script_path, "/", "\", "all")> <cfset script_file_name = listlast(script_path_and_file, "/") > </cfif> <cfset script_path = getdirectoryfrompath(getcurrenttemplatepath())> <cfset script_path = replacenocase(script_path, "c:\inetpub\wwwroot\clients\fss.com\www_dev", "", "all")> <cfset script_path = replacenocase(script_path, "c:\inetpub\wwwroot\clients\fss.com\www", "", "all")> <cfset script_path = replacenocase(script_path, "c:\inetpub\wwwroot\", "", "all")> <cfset script_file_name = listlast(script_path_and_file, "/")> <cfquery name="setnewrecord" datasource="fss_main_dev" dbname="fss_dev"> insert tblcfmpagerequest (referrerpage, referrerpath, scriptname, scriptpath) values (<cfqueryparam cfsqltype="cf_sql_varchar" value="#referer_file_name#">, <cfqueryparam cfsqltype="cf_sql_varchar" value="#finalheaderurl#">, <cfqueryparam cfsqltype="cf_sql_varchar" value="#script_file_name#">, <cfqueryparam cfsqltype="cf_sql_varchar" value="#script_path#">) </cfquery> </cffunction>
Comments
Post a Comment