我试图检查用户是普通用户还是管理员。
在我的数据库中,最后一项是" usertype"它是0或1.
0表示普通用户,1表示管理员用户。
由于某种原因,这不起作用。它总是告诉我,我是一个普通用户。"我所知道的不可能是真的。我确实将usertype设置为1。
这是我的admin.php页面
<?php
include_once '../includes/db_connect.php';
include_once '../includes/functions.php';
sec_session_start();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Dashboard</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<?php
// Create connection
$con = mysqli_connect(HOST, USER, PASSWORD, DATABASE);
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM members");
$row = mysqli_fetch_row($result);
?>
<?php
if ($row["usertype"] == 1)
{
echo "You're an admin!";
}
else
{
echo "You're a regular user.";
}
?>
</body>
</html>
答案 0 :(得分:3)
您的数据库中是否有多个用户?因为"SELECT * FROM members"
没有选择任何特定成员。
您应该提供一个用户名,以便从数据库中进行选择,如"SELECT * FROM members WHERE username = '$username'"
否则,请检查您将usertype存储为(varchar / int / etc)的内容,并确保正确比较。
答案 1 :(得分:0)
这是您的PHP代码。我浓缩了它&amp;结合起来:
<?php
// Create connection
$con = mysqli_connect(HOST, USER, PASSWORD, DATABASE);
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM members");
$row = mysqli_fetch_row($result);
if ($row["usertype"] == 1) {
echo "You're an admin!";
}
else {
echo "You're a regular user.";
}
?>
您的查询未指定用户。它只是空白地获取members
的所有值:
SELECT * FROM members
然后你运行:
$row = mysqli_fetch_row($result);
这基本上意味着无论你在members
中有1,2,3甚至300个条目,你都会抓住members
的第一个结果并采取行动。您需要更改查询以检查表members
中的特定用户名。
此外,对于字段usertype
,您是否在数据库中设置1
或0
作为号码1
或0
?或者是1
或0
的字符串值?这也可能导致问题。
答案 2 :(得分:0)
对我来说,我认为我在查询中需要WHERE子句,以便将数据与您要检查的表单字段进行对比。例如,如果我希望用户使用电子邮件地址和密码登录,我将使用以下代码:
$q = "SELECT * FROM members
WHERE (email = '$e' AND pass=SHA1('$p'))";
其中,
$e = mysqli_real_escape_string ($con, $_POST['email']); and $p = mysqli_real_escape_string ($con, $_POST['password']);
SHA()用于解密您在注册过程中可能使用的密码。
因此,接下来的步骤是:
1 /您应该检查admin用户名的usertype是否为1。我有时也会忘记这一点:-(
2 /你应该用
if ($_SESSION['usertype'] == 1) {
echo "You're an admin!";
}else{ ...}