【问题标题】:$_SERVER["HTTP_REFERER"] is not working on Mozilla$_SERVER["HTTP_REFERER"] 不适用于 Mozilla
【发布时间】:2014-12-20 23:43:48
【问题描述】:

我开发了一个简单的模态框,并添加了$_SERVER["HTTP_REFERER"],因此来自特定的推荐人不会出现。它工作正常,但 $_SERVER["HTTP_REFERER"] 不适用于 Mozilla。有没有其他方法可以做到这一点?

我正在使用简单的 PHP 代码:

if ($_SERVER["HTTP_REFERER"] == "www.thedomain.com/article.php"){
//Code to do not show the modal box
}else{
//code to show the modal box
}

【问题讨论】:

  • 引用者将包含协议http:// 执行var_dump($_SERVER['HTTP_REFERER']) 以查看它实际包含的内容。
  • 但是,发送或不发送或修改 HTTP_REFERER 字符串,或者发送它想要发送的任何内容或用户配置的任何内容,完全取决于客户端浏览器。它可能根本不存在,而且通常非常不可靠。
  • 尝试print_r($_SERVER); 看看您可以访问哪些变量。它不会依赖于浏览器 - 如果 Firefox 在特定情况下看不到它,其他人也看不到。
  • 我做了一个 var_dump($_SERVER['HTTP_REFERER']) 并且在 Firefox 上我开始为空!

标签: php


【解决方案1】:

如上所述,您不能依赖推荐人。一些用户选择完全禁用引荐来源网址,并且通过 HTTPS,它始终为空白。

只需使用查询字符串参数,例如&modal=true

【讨论】:

  • 我不能使用查询字符串! :-(
【解决方案2】:

'HTTP_REFERER' - 将用户代理引向当前页面的页面地址(如果有)。这是由用户代理设置的。不是所有的用户代理都会设置这个,有些提供修改 HTTP_REFERER 作为一个特性的能力。简而言之,它不能真正被信任。

http://php.net/manual/en/reserved.variables.server.php

换句话说,你不应该在你的代码中依赖这个值。也就是说,实际上并没有更好的可靠方法来获取这些信息。您根本无法从用户的浏览器访问这些信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 2016-12-17
    • 2017-04-09
    • 2023-03-31
    相关资源
    最近更新 更多