【问题标题】:How to separate admin and users on query?如何在查询中分离管理员和用户?
【发布时间】:2014-09-20 03:01:43
【问题描述】:

我试图让用户在名为 books 的表中创建图书详细信息。但是有两种类型的用户,即管理员和用户。管理员保存为 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, 

}

【问题讨论】:

  • 很高兴看到你有一些代码。
  • @Prix,请看,我已经更新问题并输入代码
  • 好像你的问题已经有了答案……
  • 你已经成功了!只需填写您拥有 cmets 的部分即可。
  • mysql 代码和您的目标之间没有相关性, // 东西是您问题的核心所在,而您没有显示任何内容。请提交完整的算法

标签: php mysql database cookies


【解决方案1】:

您的 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 查询中,以检查该特定用户的凭据。

【讨论】:

  • 当然,这个系统非常不安全,因为没有什么能阻止我更改我的 cookie,所以用户名是管理员的用户名。
  • 但是我该如何澄清类型呢?现在,我只会获得用户名,但不会获得该用户名的类型。不是吗?
  • 另外,你真的应该使用 PDO 或 mysqli 函数。
  • 您从 cookie 中获取 用户名。然后使用用户名查询 数据库 以获取该用户名的类型。
  • 所以我做了类似 $username = $_COOKIE['username']; $res = mysql_query("SELECT type FROM users WHERE name='$username' AND type = 1");,但是不行
【解决方案2】:

现在,假设您有一个名为 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();

【讨论】:

  • 我已经更新了问题。我正在使用cookies来保存它。请看一下。
  • 我已经使用cookies来保存用户名,但是我怎样才能保存类型?
  • 谢谢,我试试看
猜你喜欢
  • 1970-01-01
  • 2020-08-27
  • 2017-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多