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


How to get the requested URl from previous page

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

当用户单击该按钮时,页面应返回到以前的上一页。我的代码是

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

是否可以找到上一个页面链接或原始请求的URL?

是的,您可以使用$_SERVER超全局中的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的功能。简言之,它不能真正被信任。