返回上一页的标题("Location:"); 用PHP

Web*_*ner 113 php redirect back

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

Dim*_*try 230

尝试:

header('Location: ' . $_SERVER['HTTP_REFERER']);
Run Code Online (Sandbox Code Playgroud)

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

理想情况下,您需要:

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

  • 发生了奇怪的事情:) (18认同)
  • @Col所以你可以证明这个实际问题? (3认同)
  • 使用引用器,在预先测试它是否设置和有效之后,在定义的页面到页面上下文中可以是一个完全可以接受的做法 - 绝大多数浏览器一起发送正确的 HTTP_REFERER。 (2认同)
  • @Madmartigan听起来真的很奇怪的行为,我可以在'网上看到的唯一暗示导致它是一些重定向问题.无论如何,我同意如果您需要100%的安全性,使用引用者不是方法 (2认同)

Ham*_*mad 21

它如此简单只是使用它

header("location:javascript://history.go(-1)");
Run Code Online (Sandbox Code Playgroud)

它对我来说很好

  • 这可能导致从浏览器缓存提供上一页. (4认同)
  • 这听起来非常聪明,但在FF10中我得到"损坏的内容错误您尝试查看的页面无法显示,因为检测到数据传输错误."所以这基本上无法使用. (2认同)

You*_*nse 13

你必须以某种方式保存该位置.

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


6op*_*pko 9

只是一点点补充:我认为添加退出是一个常见且已知的事情; 在头函数之后我们不希望其余的代码加载或执行...

header('Location: ' . $_SERVER['HTTP_REFERER']);
exit;
Run Code Online (Sandbox Code Playgroud)


小智 6

只需在 JavaScript 中尝试一下:

 $previous = "javascript:history.go(-1)";
Run Code Online (Sandbox Code Playgroud)

或者你可以在 PHP 中尝试:

if(isset($_SERVER['HTTP_REFERER'])) {
    $previous = $_SERVER['HTTP_REFERER'];
}
Run Code Online (Sandbox Code Playgroud)