我的网站上有一个登陆页面,每个页面都有一个PHP代码,用于检查cookie,如果用户有特定的cookie,它将保留在该页面,如果没有,它将重定向到登陆页面。 在登录页面上,我有一个按钮,当用户点击它时,将创建cookie。
当用户点击按钮时,页面应该返回到之前的页面。 我的代码是
if(isset($_COOKIE['username'])){
$_COOKIE['username'];
header('location: http://example.com/main');
}
else{
//
}
是否有找到上一页链接或原始请求的网址?
答案 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();
}
请注意,出于严格的安全原因,您不应该依赖此值,但是作为“将用户退回到上一页”功能,这应该足够了!发送重定向标题后不要忘记使用exit
或die
语句,否则您的脚本的其余部分仍会执行!
请参阅有关HTTP_REFERER
:
将用户代理引用到当前页面的页面地址(如果有)。这是由用户代理设置的。并非所有用户代理都会设置此功能,有些用户可以将HTTP_REFERER修改为功能。简而言之,它无法真正被信任。