繁体   English   中英

重定向到用户登录后尝试访问的页面

[英]Redirect to page user was trying to get to after logging in

一直在阅读以找到没有太多运气的答案。

我有一个网站,成员可以匿名浏览该网站,但某些页面受到限制。 一旦他们单击需要他们登录才能查看的链接,我就会将成员重定向到登录页面。

我面临的问题是我不知道如何将成员重定向到他们登录后尝试访问的页面。

他们试图访问/profile.phtml,它把他们发送到/login.phtml,现在当他们登录时,我希望他们被发送到/profile.phtml,因为这是他们点击到达的地方。 如果他们点击/album.phtml,我希望他们在登录后被发送到/album.phtml。

任何人都可以帮忙吗? 我是否以某种方式将 URL 存储在 session 中?

非常感激。

就在调用header("Location:")重定向之前,将他们当前所在的页面存储在$_SESSION['redirect_to']中。 成功登录后,再次调用header()以重定向回原始页面并取消设置 session 变量,这样它就不会在任何地方意外重用。

$_SESSION['redirect_to'] = $_SERVER['REQUEST_URI'];
header("Location: http://example.com/login.php");
exit();

// On successful login
$redirect = $_SESSION['redirect_to'];
// unset the session var
unset($_SESSION['redirect_to']);
header("Location: http://example.com/$redirect");
exit();

您可以像其他人建议的那样使用 session 变量。 但是,我宁愿依赖 HTTP_REFFERER。 这里的缺点不是每个浏览器都会发送引荐来源网址,但大多数主要浏览器都会发送。 它是 HTTP 标准的一部分,我认为它已经足够好了。 将此粘贴在您的登录脚本中。

if(!empty($_SERVER['HTTP_REFERER'])) { header('Location: '.$_SERVER['HTTP_REFERER']); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM