如何在登录后重定向到我想要的页面并在成功登录后显示用户名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在登录后重定向到我想要的页面并在成功登录后显示用户名相关的知识,希望对你有一定的参考价值。

我正在研究我的项目。我有登录系统的问题。首先,我想重定向到我想要的页面。其次,我想在导航栏上显示用户名(与登录用户名相同)。

我已经尝试使用“header()”进行重定向,但它不起作用。它显示“找不到对象”页面。我也尝试了“window.location.assign()”但它显示的结果与“header()”相同。

的index.php

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
        .
        .
        .
    <title>Online Stock Trading</title>
</head>
<body>

    <!-- navbar -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
          .
          .
          .
      <form class="form-inline" action="php/login_page.php" method="post">
        <input class="form-control mr-sm-2" type="text" placeholder="Username" name="username">
        <input class="form-control mr-sm-2" type="password" placeholder="Password" name="password">
        <button class="btn btn-success my-2 mr-sm-2" id="login-btn" type="submit">LOGIN</button>
        <button type="button" class="btn btn-primary my-2 mr-sm-2" id="sign_up" data-toggle="modal" data-target="#exampleModalLong">SIGN UP</button>
      </form>
    </nav>
          .
          .
          .
</body>
</html>

login_page.php

<?php
$con = mysqli_connect("localhost","root","","project");

if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL".mysqli_connect_error();
}

$username = mysqli_real_escape_string($con,$_POST['username']);
$password = mysqli_real_escape_string($con,$_POST['password']);

$result = mysqli_query($con,"SELECT Username, Password FROM trader_data WHERE Username = '$username' AND Password = '$password'")
    or die("Failed to query database".mysql_error());

$row = mysqli_fetch_array($result);
if ($row['Username']==$username && $row['Password']==$password)
{
    $_SESSION['username'] = $username;
    echo "<script>
            alert('Login Success!!');
            window.location.assign('logged_in.php');
    </script>";
}
else
{
    echo "<script>
            alert('Failed to login!!');
            window.location.assign('index.php');
    </script>";
}
mysqli_close($con);
?>

logged_in.php

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
        .
        .
        .
    <title>Online Stock Trading</title>
</head>
<body>

    <!-- navbar -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
          .
          .
          .
          <div class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                <?php echo $_SESSION["username"];?>
            </a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
              <a class="dropdown-item" href="#">My Account</a>
              <a class="dropdown-item" href="#">History</a>
              <a class="dropdown-item" href="#">Portfolio</a>
              <div class="dropdown-divider"></div>
              <a class="dropdown-item" href="#">Logout</a>
            </div>
          </div>
        </div>
      </div>

    </nav>
        .
        .
        .
</body>
</html>

我希望我的网站在登录后会转到“logged_in.php”页面。然后,显示用于登录“index.php”页面的用户名。

答案

您可以尝试使用window.location.href进行重定向。要将值传递到另一个页面,您可以使用会话或发出GET请求。

使用会话:

login_page.php

<?php
session_start();
$_SESSION['username'] = $username;
?>
<script>
window.location.href="logged_in.php";
</script>

以上是关于如何在登录后重定向到我想要的页面并在成功登录后显示用户名的主要内容,如果未能解决你的问题,请参考以下文章

登录后重定向到上一页? PHP

登录成功后重定向到新页面

Laravel Ajax登录,成功后重定向到上一个url

身份验证后重定向到所需页面[重复]

Laravel 5.5登录后重定向到特定路由

Spring Oauth和安全性在登录成功后重定向到/ login