登录后,重定向到页面用户试图访问

时间:2011-08-10 00:10:02

标签: php redirect

读了一下,找不到太多运气的答案。

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

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

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

有人可以帮忙吗?我是否以某种方式将URL存储在会话中?

非常感谢。

2 个答案:

答案 0 :(得分:5)

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

$_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();

答案 1 :(得分:0)

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

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