我有一个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