在PHP中重定向到上一页

时间:2014-08-02 15:41:34

标签: php

我知道header('Location: ' . $_SERVER['HTTP_REFERER']);有一些安全问题。但是我需要将用户带回他来自的页面。只是想了解我是否存储了用户来自cookie的页面,之后可能是登录使用cookie信息将用户重定向回页面?这听起来安全吗?如果你对我有更好的建议,就像在这里一样?谢谢。

3 个答案:

答案 0 :(得分:1)

有多种方法可以做到这一点。我会做服务器端。

示例:

class Page
  {    

    public function define()
      {
         empty( $_SESSION['SCRIPT_NAME'] ) && $_SESSION['SCRIPT_NAME'] = 'http://example.com'; // default page
         in_array( $_SERVER['SCRIPT_NAME'], $this->defined()) && $_SESSION['RECOIL_PAGE'] = $_SERVER['REQUEST_URI']; // if the current page is in allowed list, make it recoil page (let user return to it)
      }

    public function defined()
      {
        return array(
            '/index.php',
            '/categories.php',
            '/videos.php',
            '/upload.php'
        );
      }

    public function recoil()
      {
        header( 'Location: ' . $_SESSION['RECOIL_PAGE'] );
        exit;
      }
  }

用法:

  • 加载时:$this->page->define(); //要检查页面是否应设置为允许,反冲页面
  • 执行时:$this->page->recoil(); //将用户重定向到可能的反冲页面,如果不在列表中,则重定向到默认页面

答案 1 :(得分:0)

不行,只是告知用户他被重定向回来,它总是在OAuth中使用,作为返回网址,记得在Facebook,Google或Twitter登录任何应用程序。

请确保您真的希望用户返回他来自的地方。

答案 2 :(得分:0)

我认为这种方法很安全。虽然我们的网站在登录后使用会话将用户重定向回上一页。它与使用cookie具有相同的效果。

使用$_SERVER["HTTP_REFERER"]并不可靠。有时它可能包含无效值。所以不建议这样做。