我正试图让用户在一个名为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();