PHP Referer of Referer(递归)

时间:2013-09-24 07:46:07

标签: php browser-history referer

我正在考虑向用户发送两个(或许更多)页面。到目前为止有效的是

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

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

所以我有参考推荐人的想法。 PHP让我$_SERVER['REFERER']使用,这是可以的,但最多只能达到一个级别。如何获得$_SERVER['REFERER']的推荐人(推荐人......)?

4 个答案:

答案 0 :(得分:1)

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

考虑重新思考为什么要这样做。您永远不能保证两步后退推荐人(即使是最后一个)仍然在您的网站中。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

JS 。否 PHP

像这样修改现有代码。

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

现在将此JS添加到您要重定向的页面。点击 test.html

时,请说 history.go(-3)
function autoLoad(){
  if (window.name=='autoLoad') {
     location.reload();
     window.name='';
  }
}

并在body标签中添加此

<body onload="autoLoad()">

答案 3 :(得分:0)

你可以做这样的事情,或者如果你更喜欢它们就使用cookies,但你不需要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>