如何在查询中分离管理员和用户


How to separate admin and users on query?

我正试图让用户在一个名为books的表中创建一个图书详细信息。然而,有两种类型的用户,即管理员和用户。在数据库中的用户表中,Admin保存为type=1,用户保存为type=0。

用户必须登录系统才能更新图书帐户。用户的详细信息保存为COOKIES中的用户名。

因此,我想命令只允许管理员上传与COOKIES用户名相关的图书表的计算机,并检查用户名是否与管理员相关,如果用户名是用户,不要让它创建。

用户

id | name | type
 1 | abc  | 1  
 2 | xyz  | 0 

我正在尝试做这样的事情

$_COOKIE['username']; 

$result = 'SELECT type FROM users WHERE type = 1'; 
$res = mysql_query($result); 
if ($res){
//let admin to enter the details 
} else {
//you are not an admin, 
}

您的SQL查询将始终返回1。你想要一些类似的东西

$username = $_COOKIE['username'];
$res = mysql_query("SELECT type FROM users WHERE name='$username'");

然后检查类型是1还是0。

$row = $mysql_fetch_assoc($res);
if ($row['type'] == 1){
    //You are an admin
} else {
    //You are not an admin
}

不管你是使用cookie还是会话。您需要将某种用户信息(无论是用户的id还是用户名)传递到SQL查询中,以检查特定用户的凭据。

现在,假设您有一个名为upload.php的php文件,用于处理书籍上传。现在,在文件中检查会话变量$_SESSION["type"]的值是否为1,即登录的用户是否为管理员。此外,我建议不要再使用mysql_*语法,因为它已被弃用。看看mysqli。我用mysqli写了答案。

//This code goes in upload.php file
$mysqli = mysqli_connect(HOST, USER, PASS, DBNAME);
$username = $_COOKIE["username"];
$stmt = $mysqli->prepare("SELECT type FROM users WHERE username=?");
if($stmt){
    $stmt->bind_param("s", $username);
    $stmt->execute;
    $stmt->bind_result($type);
    $stmt->fetch();
    $stmt->close();
}
//Now check for type
if( $type == 1){
     //Add upload code here
}
else{
     //Not admin access denied
}
$mysqli->close();