不同的usertypes具有不同的mysql访问权限

时间:2014-12-02 19:00:03

标签: php mysql

我是php的新手,可能很简单,但我需要一些帮助来完成这项任务。

我有管理员面板的登录登录表单。我也有数据库和表用户设置,到目前为止一切正常。 我想要做的是一个SuperAdmin,我已经拥有它。这种superadmin具有完全访问权限,没有限制。他可以在数据库中看到完整的数据。

现在我想要有3-4个管理员,每个管理员都可以访问他的行。例如,现在我的表houses已插入ids 1,2,3,4。 SuperAdmin可以访问四个ID,他可以查看,编辑,删除,更新它们。

现在需要另一个管理员,它只会看到id = 1的行。另一个管理员将看到id = 2的行,依此类推。换句话说,每个管理员都会在数据库中记录他的记录,并且必须只看到它们。

<?php
ob_start();
session_start();

if(isSet($_POST['submit'])) {
include('misc/db.inc.php');

$username = $_POST['username'];
$password = sha1($_POST['password'] );

$query = mysqli_query($con, "SELECT * FROM users WHERE username='".addSlashes($username)."' AND password='".addSlashes($password)."'");

$res = mysqli_num_rows($query);

if ($res == 1) {
    $_SESSION['username'] = $username;
    $_SESSION['password'] = $password;
    $_SESSION['userobj'] = mysqli_fetch_assoc($query);

    header('Location: main.php');
    exit;
} else {
echo 'error';
}
} else {
?>

在表格users中,我创建了新行userType,其中superadmin与1在一起,其他管理员与5一致。 我现在该怎么办?我想我需要在登录时检查usertype。但登录后如何给每个管理员只给他一行访问权限?

2 个答案:

答案 0 :(得分:3)

使用mysqli_fetch_array($query);代替mysqli_num_rows($query);

使用mysqli_fetch_array($query);,您可以通过执行查询来访问userType字段,并在登录时检查userType

代码:

$query = mysqli_query($con, "SELECT * FROM users WHERE username='".addSlashes($username)."' AND password='".addSlashes($password)."'");

$res = mysqli_fetch_array($query);

if ($res['userType'] == 1) {
    echo "Superadmin";
    exit;
} elseif ($res['userType'] == 5) {
echo "admin";
}
else
{
  echo "error";
}

我希望它能奏效。

答案 1 :(得分:3)

您需要通过权限(权限)将数据存储在数据库中。

Examle:简单的DB结构:

UserTypes
-------------------------
|    id   |    title   |

|    1    | SuperAdmin |   
|    2    |    Admin   |    


Users
-----------------------------------------
|    id   |  type_id   |      title     |

|    1    |      1     |   Super        |
|    2    |      2     |   SimpleA_1    | 
|    3    |      2     |   SimpleA_2    | 
|    4    |      2     |   SimpleA_3    |  
|    5    |      2     |   SimpleA_3    |     


Table1 
-----------------------------------------------
|  id     |  user_id   |   field_1  ... field_N
|   1     |     1      |    xyz     ...   N
....

TableN
-----------------------------------------------
|  id     |  user_id   |   field_1  ... field_N
|   1     |     1      |    xyz     ...   N

每个表的每一行(如果表与其他索引无关)必须具有字段 user_id 在auth之后,您将user_id保存在会话中(例如)。现在,使用DB进行操作(选择,更新,删除,插入等),您将使用抽象... WHERE user_id=..