首页  >  文章  >  后端开发  >  登录成功后如何将用户重定向回上一页?

登录成功后如何将用户重定向回上一页?

Barbara Streisand
Barbara Streisand原创
2024-11-01 04:45:02746浏览

How to Redirect Users Back to Their Previous Page After Successful Login?

成功登录后重定向到上一页

当用户登录网站时,通常希望将他们重定向回之前浏览的页面。这提供了无缝的用户体验,并且无需登录后手动导航。

为了实现此目标,常见的方法是将用户当前页面 URL 作为 $_GET 变量传递到登录表单。例如,如果用户在文章页面“comment.php?articleid=17”上尝试发表评论,则 URL 将包含当前位置。

登录页面 (login.php)然后应该检查 $_GET['location'] 是否存在。如果存在,页面可以在成功登录后将用户重定向到该特定 URL。实现方法如下:

在login.php中:

<code class="php">echo '<input type="hidden" name="location" value="';
if(isset($_GET['location'])) {
    echo htmlspecialchars($_GET['location']);
}
echo '" />';</code>

此隐藏输入字段存储当前页面 URL 并将其与登录表单提交一起发送。

在login-check.php中:

<code class="php">session_start();

$redirect = NULL;
if(isset($_POST['location']) && $_POST['location'] != '') {
    $redirect = $_POST['location'];
}

if((empty($username) OR empty($password) AND !isset($_SESSION['id_login']))) {
    $url = 'login.php?p=1';
    if(isset($redirect)) {
        $url .= '&amp;location=' . urlencode($redirect);
    }
   header("Location: " . $url);
   exit();
}
elseif (!user_exists($username,$password) AND !isset($_SESSION['id_login'])) {
    $url = 'login.php?p=2';
    if(isset($redirect)) {
        $url .= '&amp;location=' . urlencode($redirect);
    }
   header("Location:" . $url);
   exit();
}
elseif(isset($_SESSION['id_login'])) {
    if($redirect) {
        header("Location:". $redirect);
    } else {
        header("Location:login.php?p=3");
    }
    exit();
}</code>

在此login-check.php脚本中:

  1. 它检查$_POST['location']变量并分配如果存在,则将其重定向到 $redirect。
  2. 脚本处理登录错误并使用适当的错误参数重定向到登录页面。
  3. 成功登录后,它会检查重定向 URL 并重定向用户到该页面(如果存在)。否则,它会重定向到login.php,并显示登录成功的消息。

这种机制可以平滑地重定向到用户登录前浏览的页面,增强用户体验并简化登录过程。

以上是登录成功后如何将用户重定向回上一页?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn