php - 登录时不同的导航显示

标签 php html mysql

我希望在登录时显示不同的导航显示。

例如,不登录: 所有页面的导航显示:主页/关于/游戏/登录和注册

登录后: 所有页面的导航显示:主页/关于/游戏/注销

这是我的 about.php

导航代码
<!-- Navbar -->
        <nav class="navbar navbar-default">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>                        
              </button>
              <a class="navbar-brand"><img style= "height: 50px; width: 120px" src="#"></a>
            </div>
   <?php
        if(isset($_SESSION['username']) == false) {
            $mysqli = new mysqli("localhost", "mp01_user", "venture@1998", "mp01_game");
            $stmt = $mysqli-> prepare("SELECT username FROM users WHERE username= '$username'");
            $stmt->bind_param("s", $username);
            $stmt->execute();
            $stmt->bind_result($username);
            $stmt->fetch();
        ?>
        <?php 
            echo '<div class="collapse navbar-collapse" id="myNavbar">';
            echo '<ul class="nav navbar-nav navbar-right">';
            echo '<li><a href="index.html">HOME</a></li>  ';
            echo '<li><a href="about.html">ABOUT</a></li>';
            echo '<li><a href="game.html">GAME</a></li>';
            echo '<li><a href="contact.html">CONTACT</a></li>';
            echo '<li><a href="login.html">LOG IN/REGISTER</a></li>';
            $stmt->close();
            $mysqli->close();
        ?>
        <?php } else { 
            $mysqli = new mysqli("localhost", "mp01_user", "venture@1998", "mp01_game");
            $stmt = $mysqli-> prepare("SELECT username FROM users WHERE username= '$username'");
            $stmt->bind_param("s", $username);
            $stmt->execute();
            $stmt->bind_result($username);
            $stmt->fetch();


            echo '<div class="collapse navbar-collapse" id="myNavbar">';
            echo '<ul class="nav navbar-nav navbar-right">';
            echo '<li><a href="index.html">HOME</a></li>';
            echo '<li><a href="about.html">ABOUT</a></li>';
            echo '<li><a href="game.html">GAME</a></li>';
            echo '<li><a href="contact.html">CONTACT</a></li>';
            echo '<li><a href="logout.php">LOG OUT, <?php ?></a></li>';
         ?>        
              </ul>
            </div>
          </div>
        </nav>

对于game.php,我设置为在查看此页面之前必须登录的要求,因此如果用户还没有登录,他们将被引导登录。

<?php
    session_start();
    ob_start();
    If (!isset($_SESSION["username"])){
        $_SESSION['username'] = $username;
            header("Location:login.html");
        }
    else {
      $username = $_SESSION['username'];
    }
?>

这是我的 game.php 导航栏代码

<nav class="navbar navbar-default">
  <div class="container">
  <div class="navbar-header">
  <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>                        
  </button>
  <a class="navbar-brand"><img style= "height: 50px; width: 120px" src="#"></a>
</div>


<div class="collapse navbar-collapse" id="myNavbar">
  <ul class="nav navbar-nav navbar-right">
    <li><a href="index.html">HOME</a></li>  
    <li><a href="about.html">ABOUT</a></li>
    <li><a href="game.html">GAME</a></li>
    <li><a href="contact.html">CONTACT</a></li>
    <li><a href="logout.php">LOG OUT</a></li>


  </ul>
</div>

最佳答案

您可以使用与 game.php 中相同的检查。 例如:

<div class="collapse navbar-collapse" id="myNavbar">
  <ul class="nav navbar-nav navbar-right">
 <?php if (isset($_SESSION["username"])){ ?>
   <li><a href="logged in.html">Item that only logged in users can see</a></li>
 <?php } ?>
 <li><a href="everyone.html">Item that everyone can see</a></li>
  </ul>
</div>

注意:当然,如果用户已登录,您仍然需要检查每个安全页面

评论后编辑:

<div class="collapse navbar-collapse" id="myNavbar">
  <ul class="nav navbar-nav navbar-right">
    <?php if (isset($_SESSION["username"])){ ?>
      <li><a href="logout.html">logout</a></li>
    <?php }else{ ?>
      <li><a href="login.html">login / register</a></li>
    <?php } ?>
   </ul>
</div>

我们检查用户是否登录,如果用户登录我们显示注销页面,如果没有我们显示登录页面。

检查用户是否已经在登录页面登录可能是一件好事。以下检查将执行此操作并在用户已登录到页面时重定向用户:

if (isset($_SESSION["username"])){
      header("Location: PageForOnlyMembers.html");
}

关于php - 登录时不同的导航显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52661756/

相关文章:

php - 找不到对象错误 - 在 Laravel 中创建新页面时

javascript - 如何在 HTML5 Blob 对象上使用 base64 编码

html - 危险的滑动器无法在大显示器上工作

php - 使用php在数据库mysql中上传图像

mysql - 插入数据库

mysql - 为每行选择范围内不同的日期

php - PHP页面中的SQL请求

PHP: mb_strtoupper 不工作

php - 如何在 MySQL 中将 DATE 和 TIME 与 DATETIME 分开?

html - Chrome 的 HTML5 音频控件具有透明背景。如何解决这个问题?