我有一个ColdFusion网站,我需要根据用户访问网页的方式显示不同的文字。
即,
<cfif user comes from sitemap.cfm>
Display this text
<cfelse>
display this text
</cfif>
有人能指出我正确的方向吗?
答案 0 :(得分:6)
你想看一下CGI环境变量,特别是HTTP_REFERER
(不,这不会拼错 - 或者,我应该说,CGI变量的名称拼写错误)。
我相信HTTP_REFERER
的价值将包含整个网址,包括查询字符串,因此您必须解析它 - 或者使用CONTAINS
或findNoCase()
在<cfif>
声明中:
<cfif findNoCase("sitemap.cfm", cgi.HTTP_REFERER)>
Display this text
<cfelse>
display this text
</cfif>
值得注意的是,如果您从HTTP_REFERER
转到HTTP
,HTTPS
的值将为空 - 反之亦然信。
答案 1 :(得分:1)
使用CGI.HTTP_REFERER
是David Faber提到的一种可能的解决方案。这是最简单的方法,我会推荐它。
如果您因为某些原因没有或不能信任CGI.HTTP_REFERER
值,那么另一种解决方案是实现对用户的一种跟踪(更准确地说是他的http请求) )。例如,您可以:
Session
范围(而非Request
范围)中使用(键,值)例如,在onRequestStart(String targetPage)
内Application.cfm
内实施(或直接在targetPage
sitemap.cfm?)。然后执行您需要或想要执行的操作,具体取决于SESSION[key]
值和COOKIE
值。cfcookie
范围(或使用{{1}}?)。取决于http请求工作流程...... 我认为可能还有其他跟踪技巧,它取决于您: - )