首页 > 解决方案 > 管理员登录 PHP 时添加链接

问题描述

因此,如果用户是数据库中的管理员,我能够使代码工作,链接“管理员”显示。但是,当没有人登录时,它显示确定用户是否为管理员的部分代码是未定义的索引。

如何使它在没有人登录时不显示未定义的索引?

    <?php 

session_start();
?>

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="HandheldFriendly" content="True">
  <link rel="stylesheet" type="text/css" media="screen" href="css/masthead.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="css/styles.css" />
</head>
<body>
    <nav> 
        <div class="brand">


            <h1><a href="index.php">HOME PAGE</h1></a></div>
            <ul>
                <li><a href="books.php">BOOKS</a></li>
                <li><a href="stories.php">STORIES</a></li>
                <li><a href="quotes.php">QUOTES</a></li>
                <li><a href="upload.php">UPLOAD</a></li>
                <li><a href="Register.php">REGISTER</a></li>
                <li><a href="email.php">CONTACT ME</a></li>
     <?php 
$dbserverName = "localhost";
$dbuserName = "root";
$dbpassword = "";
$dbname = "database";


$db = mysqli_connect( $dbserverName , $dbuserName , $dbpassword , $dbname );

$value = $_SESSION['u_id'];
    $sql = "SELECT admin, user_id FROM users WHERE username='".$value."'";
    $result = mysqli_query($db,$sql);
    if ($row = mysqli_fetch_assoc($result)) {

        $user_id = $row['user_id'];
        $u_admin = $row['admin'];

        if ($u_admin === "Y") {


    print '<li><a href="admin.php">admin</a></li>';
        }
    }
     ?>
<?php

if (isset($_SESSION['u_id'])) {
  print '<form action = "includes/logout.inc.php" method="POST">
        <button type="submit" name="logout">LOGOUT</button>
  </form>';
}

else {
  print '<form action = "includes/login.inc.php" method="POST">
        <button type="submit" name="logout">LOGIN</button>

</form>';
}
?>
            </ul>     
    </nav>
    <section class="sec1"></section>
    <section class="sec2"></section>
    </div>
      </ul>
    </nav>
  </div>
</header>

  <main container class="siteContent">
  <!-- BEGIN CHANGEABLE CONTENT. -->`enter code here`

我被卡住了……我尝试了不同的 if 语句,其变量等于 true……但这不起作用。

我忘了在运行代码时添加错误。它不显示用户何时登录,只是在没有人登录时显示。

$value = $_SESSION['u_id'];

标签: php

解决方案


您需要在使用它们之前检查是否设置了数组值。像这样的东西 $u_admin = isset($row['admin']) ? $row['admin'] : false

如果您使用的是 php 7,则可以使用 null 合并运算符缩短它 $u_admin = $row['admin'] ?? false

这将分配您的变量(如果已设置),否则将其分配为第二个值。


推荐阅读