如何解决允许特定用户有权访问php / mysql中的特定管理页面
我有一个表(admin_users)
,如下所示,其中有5个用户的列表。表格中的所有这5个用户都可以访问每个管理页面。总共有5 admin pages
和5 admin users
。
让我们假设5 admin pages
的名称为:admin1.php
,admin2.php
,admin3.php
,admin4.php
和admin5.php
admin_users
ID user_name user_pass open
1 John sxhsds false
2 Nicholas eruerie false
3 James zsdfdf false
4 Richard adsdsf false
5 Robert rfgjrg false
以下php代码允许用户登录:
if (isset($_POST['user_name'],$_POST['user_pass']) && $_POST['user_login'] == 1) {
$username = $_POST['user_name'];
$password = $_POST['user_pass'];
$stmt = $connect->prepare("SELECT user_pass FROM admin_users WHERE user_name=?");
$stmt->bind_param('s',$username);
$stmt->execute();
$result = $stmt->get_result();
$user_from_db = $result->fetch_object();
if ($user_from_db && password_verify($password,$user_from_db->user_pass)) {
$_SESSION['webpageadmin'] = true;
$_SESSION['webpageadmin_user'] = $_POST['user_name'];
} else {
echo "Invalid username and password.";
}
}
我想要实现的是我希望特定的用户有权访问特定的管理页面。例如:
admin1.php John and Nicholas
admin2.php James and Richard
admin3.php all users
admin4.php Robert,Nicholas,James and John
admin5.php Robert
我尝试过的事情:
我正在考虑在admin_users表中再添加一列(admin_pages),如下所示:
ID user_name user_pass open admin_pages
1 John sxhsds false admin1.php,admin3,admin4.php
2 Nicholas eruerie false admin1.php,admin3.php,admin4.php
3 James zsdfdf false admin2.php,admin4.php
4 Richard adsdsf false admin2.php,admin3.php
5 Robert rfgjrg false admin3.php,admin4.php,admin5.php
我想知道我需要在上面的php代码中进行哪些更改,以便它在上面的admin_pages
表中查找用户(尝试登录)及其admin_users
。
解决方法
选项1:我认为,如果您可以允许自己容纳更多的桌子,那么最干净,最简单 添加一张权利表:
ID access
1 God-like
3 Admin1
4 Admin2
5 Admin3
然后,您可以在用户表中添加一列,并对访问ID进行字符串化,然后在登录时将其拆分为一个数组。
ID user_name user_pass open access
1 John sxhsds false 1,2,3
2 Nicholas eruerie false 3,5
3 James zsdfdf false 1,4,5
4 Richard adsdsf false 3,5
5 Robert rfgjrg false 1,5
或使用其他表格
UserId access_id
1 1
1 2
1 3
PHP方面,登录时,您将访问ID存储在会话/ cookie中。 在每个需要特定访问权限的页面上,如果用户具有所需的访问权限,则只需签入会话/ cookie。
选项2:如果您只能负担一栏并要添加页面名称。 您仍然必须存储用户登录时可以访问的页面(会话/ cookie)
To get the current page : basename($_SERVER['PHP_SELF']);
您必须使页面面对已存储的页面名称。祝您项目顺利;)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。