如何从上一页获取请求的URl

时间:2014-10-08 18:36:40

标签: php url cookies

我的网站上有一个登陆页面,每个页面都有一个PHP代码,用于检查cookie,如果用户有特定的cookie,它将保留在该页面,如果没有,它将重定向到登陆页面。 在登录页面上,我有一个按钮,当用户点击它时,将创建cookie。

当用户点击按钮时,页面应该返回到之前的页面。 我的代码是

if(isset($_COOKIE['username'])){
   $_COOKIE['username'];
   header('location: http://example.com/main');
}
else{
//
}

是否有找到上一页链接或原始请求的网址?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用$_SERVER superglobal中的HTTP_REFERER值:

if(isset($_COOKIE['username'])) {
    $_COOKIE['username']; // <-- what is this for? What are you doing with it?
    header('location: http://example.com/main');
    die();
}
else{
    header(
        'Location: ' . 
        !empty($_SERVER['HTTP_REFERER']) ? 
            $_SERVER['HTTP_REFERER'] : 
            'http://example.com/access_denied' // In case HTTP_REFERER is blank, fallback to this
    );
    die();
}

请注意,出于严格的安全原因,您不应该依赖此值,但是作为“将用户退回到上一页”功能,这应该足够了!发送重定向标题后不要忘记使用exitdie语句,否则您的脚本的其余部分仍会执行!

请参阅有关HTTP_REFERER

的文档
  

将用户代理引用到当前页面的页面地址(如果有)。这是由用户代理设置的。并非所有用户代理都会设置此功能,有些用户可以将HTTP_REFERER修改为功能。简而言之,它无法真正被信任。