返回上一页,页眉为(“位置”);在PHP中

返回上一页,页眉为(“位置”);在PHP中,php,redirect,back,Php,Redirect,Back,这个问题的标题可以解释我的问题。如何使用标题(“Location:URL of previous page”)将PHP页面访问者重定向回上一页尝试: header('Location: ' . $_SERVER['HTTP_REFERER']); 请注意,这可能不适用于安全页面(HTTPS),总体而言,这是一个非常糟糕的主意,因为头部可能被劫持,从而将用户发送到其他目的地。浏览器甚至可能不会发送标题 理想情况下,您将希望: 将返回地址作为查询变量附加到请求中(例如?back=/list) 在

这个问题的标题可以解释我的问题。如何使用
标题(“Location:URL of previous page”)将PHP页面访问者重定向回上一页

尝试:

header('Location: ' . $_SERVER['HTTP_REFERER']);
请注意,这可能不适用于安全页面(HTTPS),总体而言,这是一个非常糟糕的主意,因为头部可能被劫持,从而将用户发送到其他目的地。浏览器甚至可能不会发送标题

理想情况下,您将希望:

  • 将返回地址作为查询变量附加到请求中(例如?back=/list)
  • 在代码中定义返回页(即,所有成功的表单提交都重定向到列表页)
  • 为用户提供下一步的选择(例如保存并继续编辑或仅保存)

    • 您必须以某种方式保存该位置


      假设它是一个POST表单,只需将当前位置放在一个隐藏字段中,然后将其用于
      标题()
      位置。

      只需使用此

      header("location:javascript://history.go(-1)");
      

      在会话变量中存储以前的url对我来说效果很好,因为用户可能右键单击多个页面,然后返回并保存

      除非您将会话变量中的上一个url保存到表单中的隐藏字段中,并在保存标题之后(“位置:保存调用页面的url”)

      只需添加一点: 我相信添加
      exit是一件常见且众所周知的事情在头函数之后,以防我们不希望加载或执行其余代码

      header('Location: ' . $_SERVER['HTTP_REFERER']);
      exit;
      

      只需在Javascript中尝试以下操作:

       $previous = "javascript:history.go(-1)";
      
      也可以在PHP中尝试:

      if(isset($_SERVER['HTTP_REFERER'])) {
          $previous = $_SERVER['HTTP_REFERER'];
      }
      

      奇怪的事情发生了:)@Col所以你可以证明这是一个实际问题?使用referer,在事先测试它是否已设置且有效后,在定义的页到页上下文中,这是一种完全可以接受的做法-绝大多数浏览器都会发送一个适当的HTTP\U引用器。@Col我在生产中使用过这个,当时我必须为演示做一些事情。正如您从我的回答中所看到的,我提供了另外三种解决方案,而不是基于HTTP_REFERER的重定向。@Madmartigan这听起来很奇怪,我在“网络”上看到的唯一提示是一些重定向问题。无论如何,我同意如果您需要100%的安全性,使用referer不是一种方式。这听起来非常聪明,但在FF10中,我发现
      “损坏的内容错误由于检测到数据传输错误,您试图查看的页面无法显示。”
      这基本上是不可用的。Wesley Murch,它在几乎所有主要浏览器中都能正常工作,包括您提到的那一个。只有当您访问的页面有历史记录时,它才对您有效。这可能会导致上一页由浏览器缓存提供服务。为什么我们不能只使用$_服务器['http_REFERER']?它只对我有效。标头('Location:'。$_服务器['http_REFERER']);根据该消息来源,它不可靠,因为并非所有供应商都支持它