我是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
。但登录后如何给每个管理员只给他一行访问权限?
答案 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=..
。