首页 > 解决方案 > 用户登录后如何更改导航栏?

问题描述

我目前有 2 个不同的导航栏。一个在顶部带有登录和注册,一个带有帐户。我希望导航栏在用户登录后更改为带有帐户的导航栏。我的注册和登录系统已经在工作,因此不必更改(连接到数据库)。别介意名字,这是一个学校项目。

这些是我的 2 个导航栏:

<div class="navbar">
    <a class="active" href="Boomba.php">Boomba</a>
    <div class="dropdown">
        <button class="dropbtn">Boomba News 
            <i class="fa fa-caret-down"></i>
        </button>
        <div class="dropdown-content">
            <a href="Newnews.php">New News</a>
            <a href="Deadnews.php">Dead News</a>
        </div>
    </div>
    <a href="Boombastore.php">Boomba Store</a>
    <a href="BoombaForm.php">Contact</a>
    <div class="floatr">
        <a href="0register.php">Sign Up</a>
        <a href="0login.php">Login</a>
        <a href="welcome.php">Account</a>
    </div>
</div>

我目前在页面顶部有这个:

<?php
session_start();
?>

请让我知道是否有更简单的方法可以实现这一点,这是我的第一个网站。

提前致谢 :)

编辑:

我的配置文件:

<?php

define('DB_SERVER', '-');
define('DB_USERNAME', '-');
define('DB_PASSWORD', '-');
define('DB_NAME', '-');

$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
?>

我的登录文件:

<?php
session_start();

if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
    header("location: welcome.php");
    exit;
}

require_once "0config.php";

$username = $password = "";
$username_err = $password_err = "";

if($_SERVER["REQUEST_METHOD"] == "POST"){

    if(empty(trim($_POST["username"]))){
        $username_err = "Please enter username.";
    } else{
        $username = trim($_POST["username"]);
    }

    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter your password.";
    } else{
        $password = trim($_POST["password"]);
    }

    if(empty($username_err) && empty($password_err)){
        $sql = "SELECT id, username, password FROM users WHERE username = ?";

        if($stmt = mysqli_prepare($link, $sql)){
            mysqli_stmt_bind_param($stmt, "s", $param_username);

            $param_username = $username;

            if(mysqli_stmt_execute($stmt)){
                mysqli_stmt_store_result($stmt);

                if(mysqli_stmt_num_rows($stmt) == 1){                    
                    mysqli_stmt_bind_result($stmt, $id, $username, $hashed_password);
                    if(mysqli_stmt_fetch($stmt)){
                        if(password_verify($password, $hashed_password)){
                            session_start();

                            $_SESSION["loggedin"] = true;
                            $_SESSION["id"] = $id;
                            $_SESSION["username"] = $username;                            

                            header("location: welcome.php");
                        } else{

                            $password_err = "The password you entered was not valid.";
                        }
                    }
                } else{
                    $username_err = "No account found with that username.";
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }
        }

        mysqli_stmt_close($stmt);
    }

    mysqli_close($link);
}
?>

标签: phphtmlmysql

解决方案


登录操作后,您必须将用户特定的数据加载到$_SESSION数组中。想象一下,您已将用户数据存储到$_SESSION然后您可以检查该$_SESSION值是否存在。

下面给出了一个示例代码。如果您不明白,请告诉我。

<?php
    session_start();
    if (isset($_SESSION["loggedin"]) && ($_SESSION["loggedin"] == TRUE)) {
        //write a nav menu html code here
        ?>
        <div>
            nav-1
        </div>
        <?php
    } else {
        //write another nav menu html code here
        ?>
        <div>
            nav-2
        </div>
        <?php
    }
?>

推荐阅读