我对 login.php 页面所做的是,如果用户已登录,他将被重定向到 first.php 页面。
session_start();
if(isset($_SESSION['usr']) && isset($_SESSION['pswd'])){
header("Location: first.php");
}
在所有其他页面中,如果用户尚未登录,他将被重定向到 login.php 页面。
session_start();
if(!isset($_SESSION['usr']) || !isset($_SESSION['pswd'])){
header("Location: login.php");
}
问题来了:有没有办法将用户重定向回原来的位置?假设您在未登录的情况下尝试访问 second.php,您现在将被重定向到 login.php 页面;登录后,是否可以将您重定向回 second.php 而不是 first.php?
我尝试使用 $_SERVER['HTTP_REFERER']
,但是这个变量不包含任何内容;如果您因为点击了链接而来到这里,它只会包含一些内容。
最佳答案
- 在他们尝试登录的页面上,设置一个包含该页面 URL 的 session 变量。
- 然后将他们重定向到登录页面。
- 成功登录后,从他们的 session 中获取之前的 URL 并将他们重定向到那里。
让执行重定向的页面设置一个 session 变量,即该页面的 URL:
session_start();
if (!$logged_in)
{
$_SESSION['redirect_url'] = $_SERVER['PHP_SELF'];
header('Location: login.php');
exit;
}
然后在成功登录后将他们重定向到该 URL:
session_start();
/* Login code goes here */
$redirect_url = (isset($_SESSION['redirect_url'])) ? $_SESSION['redirect_url'] : '/';
unset($_SESSION['redirect_url']);
header("Location: $redirect_url", true, 303);
exit;
上面的内容可以改进,但这应该给你想法。
关于PHP 重定向回上一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17847316/