【问题标题】:Back to previous page with header( "Location: " ); in PHP带标题返回上一页(“位置:”);在 PHP 中
【发布时间】:2011-07-14 04:34:26
【问题描述】:

这个问题的标题有点解释我的问题。如何使用 header( "Location: URL of previous page" ); 将 PHP 页面访问者重定向回他们的上一个页面

【问题讨论】:

标签: php redirect back


【解决方案1】:

尝试:

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

请注意,这可能不适用于安全页面 (HTTPS),总体而言这是一个非常糟糕的主意,因为标头可能被劫持,将用户发送到其他目的地。浏览器甚至可能不会发送标头。

理想情况下,您会想要:

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

【讨论】:

  • 发生了奇怪的事情:)
  • @Col 所以你可以证明一个实际的问题?
  • 在定义的页面到页面上下文中使用引用,在预先测试它是否设置和有效之后,这是一种完全可以接受的做法 - 绝大多数浏览器都会发送一个正确的 HTTP_REFERER。跨度>
  • @Col 当我不得不为演示做一些事情时,我在生产中使用了它。从我的回答中可以看出,我提供了其他三种解决方案,而不是基于 HTTP_REFERER 的重定向。
  • @Madmartigan 这听起来很奇怪,我在网上看到的唯一提示是一些重定向问题。无论如何,我同意如果您需要 100% 的安全,则使用推荐人不是方法
【解决方案2】:

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

说它是一个 POST 表单,只需将当前位置放在隐藏字段中,然后在 header() 位置中使用即可。

【讨论】:

    【解决方案3】:

    这么简单就用这个

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

    它对我来说很好用

    【讨论】:

    • 这听起来很聪明,但在FF10中我得到"Corrupted Content Error The page you are trying to view cannot be shown because an error in the data transmission was detected."所以这基本上是不可用的。
    • Wesley Murch,它在几乎所有主流浏览器中都能正常工作,包括你提到的那个。仅当您来到具有历史记录的页面时,它才对您有用。
    • 这可能会导致从浏览器缓存中提供上一页。
    【解决方案4】:

    将以前的 url 存储在会话变量中是不好的,因为用户可能会右键单击多个页面,然后返回并保存。

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

    【讨论】:

    • 为什么我们不能只使用 $_SERVER['http_referrer']?
    【解决方案5】:

    只是一点点补充: 我相信在标题函数之后添加exit; 是一种常见且已知的事情,以防我们不希望其余代码加载或执行......

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

    【讨论】:

    • 对我来说只是“”。
    【解决方案6】:

    用 Javascript 试试这个:

     $previous = "javascript:history.go(-1)";
    

    或者你可以用 PHP 试试:

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

    【讨论】:

      【解决方案7】:

      我知道这个问题专门针对标题,但如果有人想在按钮内执行此操作,这就足够了。

      <button type="button" class="btn btn-default" onclick="javascript:history.go(-1)">Back</button>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 2017-07-25
        • 1970-01-01
        • 2019-02-23
        • 2020-07-11
        • 1970-01-01
        • 2018-10-05
        相关资源
        最近更新 更多