使用PHP登录后重定向到上一页

mis*_*ist 9 php

假设我想导航到联系页面.但为了到达那里,该网站要求我登录.登录后,我应该被重定向到联系页面,但我在其他地方.我该怎么做才能在登录后将其重定向到我想要的页面?

我有一种强烈的感觉,这与会议有关,但仍然如此.该方法应该是什么?

cle*_*tus 10

你有三种一般方法:

  1. 将上一页存储在会话中;
  2. 将页面存储为GET变量; 要么
  3. 执行内部重定向到登录页面.

(1)看起来像:

<?php
session_start();
if (!$_SESSION['userid']) {
  $_SESSION['page'] = '/contact';
  header('Location: /login');
  exit;
}
...
?>
Run Code Online (Sandbox Code Playgroud)

成功登录检索$_SESSION['page']和重定向.

(2)类似,只是没有会话变量.相反,你有:

header('Location: /login?return=/contact');
Run Code Online (Sandbox Code Playgroud)

传递重定向.登录页面必须将其作为隐藏的表单字段包含在页面上,向用户显示用户名和密码的请求.

(3)类似但不重定向到单独的页面.相反,每个页面都可能是登录页面.如果用户未登录,则会显示登录表单.该URL仍为"/ contact".每个页面都将检测并处理登录尝试.

此方法的优点是减少外部重定向,并且更容易处理提交的表单.我的意思是,假设有人在您的某个页面上填写表单,然后单击"提交".系统看到他们的登录已过期.如果您将用户重定向到新页面然后重定向回来,他们可能需要重新输入所有表单域.如果您隐式处理登录,则可以将所有表单字段包含为隐藏输入,并且一旦登录就无缝地将其视为原始页面的提交.

  • 3.将prev页面存储为GET变量:) (2认同)