需要帮助理解Coldfusion URL引用



我有一个ColdFusion网站,我需要根据用户访问页面的方式在该网站上显示不同的文本。

<cfif user comes from sitemap.cfm>
    Display this text
<cfelse>
    display this text
</cfif>

有人能给我指正确的方向吗?

您需要查看CGI环境变量,特别是HTTP_REFERER(不,这没有拼写错误——或者,我应该说,CGI变量的名称拼写错误)。

我相信HTTP_REFERER的值将包含整个URL,包括查询字符串,所以您必须解析它——或者在<cfif>语句中使用CONTAINSfindNoCase()

<cfif findNoCase("sitemap.cfm", cgi.HTTP_REFERER)>
    Display this text
<cfelse>
    display this text
</cfif>

需要注意的是,如果从HTTPHTTPSHTTP_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请求工作流

我认为可能还有其他跟踪技术,这取决于您:-)

最新更新