我有一个ColdFusion网站,我需要根据用户访问页面的方式在该网站上显示不同的文本。
即
<cfif user comes from sitemap.cfm>
Display this text
<cfelse>
display this text
</cfif>
有人能给我指正确的方向吗?
您需要查看CGI环境变量,特别是HTTP_REFERER
(不,这没有拼写错误——或者,我应该说,CGI变量的名称拼写错误)。
我相信HTTP_REFERER
的值将包含整个URL,包括查询字符串,所以您必须解析它——或者在<cfif>
语句中使用CONTAINS
或findNoCase()
:
<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
作用域)中使用(key,value)。例如,通过在Application.cfm
内的onRequestStart(String targetPage)
中实现(或直接在sitemap.cfm?中实现)。然后根据targetPage
值和SESSION[key]
值执行您需要或想执行的操作 - 使用相同的技术,但使用
COOKIE
范围(或使用cfcookie
?)。取决于http请求工作流
我认为可能还有其他跟踪技术,这取决于您:-)