php - 管理员登录 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'];
解决方案
您需要在使用它们之前检查是否设置了数组值。像这样的东西
$u_admin = isset($row['admin']) ? $row['admin'] : false
如果您使用的是 php 7,则可以使用 null 合并运算符缩短它
$u_admin = $row['admin'] ?? false
这将分配您的变量(如果已设置),否则将其分配为第二个值。
推荐阅读
- java - 使用自定义 URL 在 Spring Boot 中创建一个肥皂端点
- build - 我可以使用 rsync 同步两个 bazel-remote-cache 吗
- python - 根据分隔符拆分字符串列并将其转换为 Pandas 中的 dict 而无需循环
- python - 对于 XGBoost 有没有办法在每个推理的基础上找到特征重要性
- r - 用 rbind 组合两个向量
- ruby - 删除值小于 1000 的哈希键
- python - 在时间戳上加入两个熊猫数据框
- c# - c# 从delegate.begininvoke 捕获异常而不调用delegate.endinvoke
- firebase - 如何使用 Firebase 规则存在于 Firestore 的 SubCollection 中
- mongodb - 从 mongoDB 获取数据时不打印输出