【问题标题】:PHP Referrer of Referrer (Recursively)Referrer的PHP Referrer(递归)
【发布时间】:2013-09-29 07:48:06
【问题描述】:

我正在考虑将用户从他们来的地方送回两个(或更多)页面。到目前为止有效的是

<strong>
    <a href="javascript:history.go(-3)">
        Click here to go back to the view
    </a>
</strong>

但是,被调用的 [历史] 页面不会刷新以显示更改。

所以我有了推荐推荐人的想法。 PHP 给了我$_SERVER['REFERER'] 使用,这没问题,但只能达到一个级别。我如何获得$_SERVER['REFERER'] 的推荐人(推荐人...)?

【问题讨论】:

  • 什么意思“页面不刷新”?当回顾浏览器历史时,9/10,页面将来自浏览器缓存,所以如果你的意思是,在第 1 页,用户可以更改内容,第 2 页感谢他们的输入,第 3 页将它们带到概述,这就是包含指向 page1 的链接的页面,history.go(-3) 确实不起作用。您只需再次将它们重定向到 page1,强制执行新请求
  • 经过编辑以减少歧义
  • 嗯,总会有会话来跟踪客户在您网站上的“动作”。因此,如果他/她需要在 3 个推荐人之前被重定向,您可以从会话中获取该信息...

标签: php browser-history referer


【解决方案1】:

据我所知,您无法在 PHP 中做到这一点。简单的答案是否定的,因为 PHP 是服务器端的,只获取当前的引用者,而 Javascript 是客户端大小的,在浏览器上运行,实际上确实有 2 个或更多历史步骤。

考虑重新思考您为什么希望这种情况发生。您永远无法保证 2 步后退引荐来源网址(即使是最后一个引荐来源网址)仍在您的网站中。

【讨论】:

    【解决方案2】:

    JS。没有PHP

    像这样修改你现有的代码。

      <strong>
            <a href="javascript:window.name='autoLoad';history.go(-3)">
                Click here to go back to the view
            </a>
        </code>
    

    现在将此 JS 添加到您被重定向的页面。当你点击 history.go(-3)

    时说 test.html
    function autoLoad(){
      if (window.name=='autoLoad') {
         location.reload();
         window.name='';
      }
    }
    

    并在body标签中添加这个

    <body onload="autoLoad()">
    

    【讨论】:

    • 谢谢。它工作正常并实现了我想要的。我想投票,但 SO 抱怨我没有足够的声望点。再次感谢
    【解决方案3】:

    在服务器变量中$_SERVER['REFERER'] 只是最后一个引用者。如果要使用以前的,则必须将它们保存到会话中。问题是您无法找出哪个浏览器选项卡初始化了请求 - 因此所有选项卡的历史记录都会混合在一起。

    解决方案是使用 JS 强制浏览器重新加载页面。

    【讨论】:

      【解决方案4】:

      你可以做这样的事情,或者如果你更喜欢它们,也可以使用 cookie,但你不需要 PHP。

      <input type="hidden" id="reload" value="0">
      
      <script type="text/javascript">
        window.onload = function(){
          var el = document.getElementById("reload");
      
          if(el.value != "0")         
          {
            window.location.reload();
          }
      
          el.value="1";
        }
      </script>
      

      【讨论】:

        猜你喜欢
        • 2020-07-14
        • 2018-02-20
        • 1970-01-01
        • 1970-01-01
        • 2017-12-04
        • 2019-04-27
        • 1970-01-01
        • 2011-01-28
        • 1970-01-01
        相关资源
        最近更新 更多