1

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

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

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

所以我有了推荐推荐人的想法。PHP给了我$_SERVER['REFERER']用,还可以,但只能升一级。我如何获得推荐人(推荐人......)$_SERVER['REFERER']

4

4 回答 4

1

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

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

于 2013-09-24T07:51:02.277 回答
0

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

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

于 2013-09-24T07:55:12.980 回答
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()">
于 2013-09-24T07:56:34.127 回答
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>
于 2013-09-24T08:03:18.533 回答