php - 重定向到页面用户在登录后试图到达

标签 php redirect

阅读了一些文章以找到答案,运气不太好。

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

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

他们试图访问/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();

关于php - 重定向到页面用户在登录后试图到达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7004530/

相关文章:

php - 支付交易编码后的 Paypal 重定向

php - 选择值存在的位置

php - IN array in where 子句 mysql php pdo

php - 如何分别回显日期部分

apache - 在 apache 中排除站点重定向到 https

JavaFX - ErrorStream 到标签中

javascript - SetTimeout 重定向不适用于 Firefox

http - 让 Amazon S3 在缺少对象请求时重定向到我的端点?

php 使用 bacon/bacon-qr-code 写入浏览器而不先写入屏幕

javascript - 我只能捕获 Node.js 脚本的第一行输出