我正在尝试根据登录的用户类型过滤数据库数据。如果管理员已登录,他应该能够查看数据库中的所有数据,但如果特定用户已登录,他应该只能查看他/她的信息。然而,它不起作用。管理部分工作,但“普通”用户仍然可以查看所有数据表数据,这不是我想要的。请帮助我们还在学习PHP的人
这是我文件顶部的PHP:
if(!isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] !== true) {
header("Location: Login.php");
}
include("Functions.php");
include("Database.php");
$db = mysqli_connect($host, $user, $password, $db)
or die(mysqli_connect_error());
?>
这是我表中的PHP: 纳摩 电子邮件
if(isset($_SESSION['admin']) && $_SESSION['admin'] == true) {
echo "<th>Admintype</th>";
echo "<th>User ID</th>";
}
?>
</tr>
<?php
if(isset($_SESSION['admin']) && $_SESSION['admin'] == true) {
$query = "SELECT * FROM gebruikers";
if ($result = $db->query($query)) {
while ($user = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $user['usersId'] . "</td>";
echo "<td>" . $user['naam'] . "</td>";
echo "<td>" . $user['email'] . "</td>";
echo "<td>" . $user['admintype'] . "</td>";
echo "</tr>";
}
}
} elseif(!isset($_SESSION['admin']) && $_SESSION['admin'] !== true) {
$query2 = "SELECT naam, email
FROM gebruikers
WHERE usersId = " . $_SESSION['id'] . " ";
if ($result2 = $db->query($query2)) {
while ($user2 = $result2->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $user['naam'] . "</td>";
echo "<td>" . $user['email'] . "</td>";
echo "</tr>";
}
}
}
?>
</table>
用户登录时启动的$_SESSION['id']
,它还会检查用户是否为管理员。