我的网站中确实有一个登录页,在每个页面中我都有一个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();
}
请注意,出于严格的安全原因,您不应该依赖此值,但是作为"将用户反弹到上一页"功能,这应该足够了!不要忘记在发送重定向标头后使用exit
或die
语句,否则脚本的其余部分仍将执行!
关于HTTP_REFERER
:的文档注释
将用户代理引用到当前页面的页面的地址(如果有)。这是由用户代理设置的。并非所有的用户代理都会设置此项,有些用户代理提供了修改HTTP_REFERER的功能。简言之,它不能真正被信任。