动态重定向 PHP 登录


redirect PHP login dynamically

随着现有代码交给我,我需要根据调用login.php文件的源自动或动态地重定向PHP中的登录名。让我首先列举所涉及的网页:

  1. 仪表板页面,如 view_list.php,它是用户登录后的主页
  2. 检查用户是否已登录的check_session.php页面。否则,它将使用以下方法重定向用户:

    if (!isset($_SESSION["username"])) 
    { 
           $url = "http://sample.com/login.php"; 
           header("location:$url");
    }
    
  3. 登录.php页面,接受用户名和密码的输入,如果身份验证成功,则会重定向回仪表板页面

现在,除了项目 #1 中的仪表板页面外,还有许多其他页面通过check_session.php检查用户会话。我想要的是,来自这些页面中的任何一个,用户将被重定向到登录.php(如果会话指示未登录),并且登录.php会将用户重定向回登录前访问的原始页面.php。重定向当前正在使用标头("位置:$url")完成。我想到的解决方案是在check_session.php和登录中定义一个 GET 参数.php该参数将附加到 URL 位置。因此,GET 参数的流将在登录view_list.php>> check_session.php>>.php .

由于至少涉及 3 页,鉴于现有代码,我在考虑这是否是唯一可行的解决方案。目前,无论起始页面或登录页面(其他页面通过URL直接访问),它们都将具有相同的页面重定向到,并在login.php中硬编码。代码是用本机PHP编写的。非常感谢您的意见。谢谢!

对你的公共标头做这样的事情:

session_start();
if (!$_SESSION['loggedin']) {
   $_SESSION['return_url'] = $_SERVER['PHP_SELF'];
   header("Location: login.php");
   exit();
}

基本上将当前页面的 url 保存在会话中,然后重定向到登录页面。然后在登录处理程序中:

session_start();
... process login ...
if(login_successful()) {
   $return_to = $_SESSION['return_url'];
   $_SESSION['return_url'] = null; // clear it, just in case.
   header("Location: $return_to");
}