132

这个问题的标题有点解释我的问题。如何使用header( "Location: URL of previous page" );

4

7 回答 7

273

尝试:

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

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

理想情况下,您需要:

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

这么简单就用这个

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

它对我来说工作正常

于 2012-01-18T11:18:28.637 回答
17

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

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

于 2011-03-12T19:54:29.827 回答
16

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

header('Location: ' . $_SERVER['HTTP_REFERER']);
exit;
于 2014-08-10T13:23:41.217 回答
5

只需在 Javascript 中尝试:

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

或者你可以在 PHP 中尝试:

if(isset($_SERVER['HTTP_REFERER'])) {
    $previous = $_SERVER['HTTP_REFERER'];
}
于 2015-05-27T12:17:28.237 回答
3

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

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

于 2012-02-06T07:40:59.790 回答
0

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

<button type="button" class="btn btn-default" onclick="javascript:history.go(-1)">Back</button>
于 2021-06-21T11:09:06.187 回答