我有一個ColdFusion站點,我需要根據用戶如何顯示不同的文本進入頁面。需要幫助瞭解Coldfusion URL引用
即,
<cfif user comes from sitemap.cfm>
Display this text
<cfelse>
display this text
</cfif>
有人能指出我在正確的方向?
我有一個ColdFusion站點,我需要根據用戶如何顯示不同的文本進入頁面。需要幫助瞭解Coldfusion URL引用
即,
<cfif user comes from sitemap.cfm>
Display this text
<cfelse>
display this text
</cfif>
有人能指出我在正確的方向?
你想看看CGI環境變量,特別是HTTP_REFERER
(和不,這不是拼寫錯誤 - 或者,我應該說,CGI變量的名稱拼寫錯誤)。
我相信HTTP_REFERER
值將包含整個URL,包括查詢字符串,所以你必須分析它 - 或者使用CONTAINS
或findNoCase()
在<cfif>
聲明:
<cfif findNoCase("sitemap.cfm", cgi.HTTP_REFERER)>
Display this text
<cfelse>
display this text
</cfif>
這是重要的是要注意,如果您從HTTP
到HTTPS
,則HTTP_REFERER
的值將爲空 - 反之亦然,我相信。
使用CGI.HTTP_REFERER
是David Faber提到的一種可能的解決方案。這是最簡單的方法,我會推薦它。
如果您因爲某種原因不信任CGI.HTTP_REFERER
值,那麼另一種解決方案是實現一種跟蹤用戶(更確切地說是他的http請求)的方式。例如,你可以:
Session
範圍(而不是Request
範圍)一個(鍵,值)e.g通過在onRequestStart(String targetPage)
實現它你Application.cfm
內(或直接在sitemap.cfm?)。然後根據targetPage
的值和SESSION[key]
的值,做你需要或想做的事情。COOKIE
範圍(或與cfcookie
?)。依賴於HTTP請求的工作流程...我想可能有其他跟蹤技術,它是給你:-)
我不認爲** REQUEST **作用域會起作用,因爲它被每個頁面銷燬 - 它不會在下一頁(這是我認爲, OP正在尋找什麼)。 ** SESSION **是一個更好的方式來做到這一點。 – 2015-02-23 23:17:56
你是對的!像SESSION [「sitemap_visited」]更好;-) – user1199680 2015-02-23 23:20:30
...和HTTP_REFERER也可以阻止或欺騙。因此,與任何客戶提供的價值一樣,不要依賴任何重要的東西。 – Leigh 2015-02-23 22:49:31
不幸的是......這是真的...... – user1199680 2015-02-23 23:15:56