PHP實現權限管理功能


權限管理系統,它主要是為了給不同的用戶設定不同的權限,從而實現不同權限的用戶登錄之后使用的功能不一樣。

首先先看下數據庫

總共有5張表,users,roles和roleswork 3張表與另外2張表形成"w"型的關系,也是比較常見的一種權限數據庫的方式,首先先做權限的設定,也就是管理層給不同用戶設定不同權限。

1.管理員頁面RBAC.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>權限管理</title>
        <script src="bootstrap/js/jquery-1.11.2.min.js"></script>        
    </head>
    <body>    
        <h2>用戶與角色管理</h2>
        <div>
            請選擇用戶:
        <select id="user">
            <?php
            require_once "./DBDA.class.php";
            $db = new DBDA();
            $sql = "select * from users";
            $arr = $db->query($sql,0);
            foreach($arr as $v){
                echo "<option value='{$v[0]}'>{$v[2]}</option>";
            }
            ?>
        </select>
        </div>    
        <br />
        <div>
            請選擇角色:
            <?php
            $sql = "select * from roles";
            $arr = $db->query($sql,0);
            foreach($arr as $v){
                echo "<input type='checkbox' class='ck' value='{$v[0]}'>{$v[1]}";
            }
            ?>
        </div>
        <br />
        <input type="button"  value="確認" id="btn"/>
    </body>
    <script>
        sel(); //選中默認角色
        $("#user").change(function(){
       //當用戶選中變化的時候,去選中相應角色 sel(); })
      //點擊確定保存角色信息 $(
"#btn").click(function(){ var uid = $("#user").val(); var ck = $(".ck"); var role = "";//初始為空 for(i=0;i<ck.length;i++){ var v = ck.eq(i).val(); if(ck.eq(i).prop("checked")){ role += ck.eq(i).val()+"|"; } } $.ajax({ type:"POST", url:"RBbtnchuli.php", data:{uid:uid,role:role}, dataType:"TEXT", success:function(data){ alert("修改成功!"); } }); })
      //選中默認角色的封裝方法
function sel(){ var uid = $("#user").val(); $.ajax({ url:"RBchuli.php", data:{uid:uid}, type:"POST", dataType:"TEXT", success:function(data){ var role = data.split("|"); var ck = $(".ck"); ck.prop("checked",false); for(i=0;i<ck.length;i++){ var v = ck.eq(i).val(); if(role.indexOf(v)>=0){ ck.eq(i).prop("checked",true); } } } }); } </script> </html>

2.做管理員的處理頁面RBchuli.php

<?php
$uid = $_POST["uid"];
require_once "./DBDA.class.php";
$db = new DBDA();
$sql = "select rolesuid from users_roles where usersuid='{$uid}'";
echo $db->StrQuery($sql,0);

 保存角色信息的處理頁面RBbtnchuli.php

<?php
$uid = $_POST["uid"];
$role = $_POST["role"];//字符串
$role = substr($role,0,strlen($role)-1);
$arr = explode("|", $role);
require_once "./DBDA.class.php";
$db = new DBDA();
//刪除
$sdel = "delete from users_roles where usersuid='{$uid}'";
$db->query($sdel);
//添加
foreach($arr as $v){
	$sql = "insert into users_roles values(0,'{$uid}','{$v}')";
	$db->query($sql);
}

 效果如圖:

 

 

 

 接下來做的是登錄某個賬號,查看自己的職能

3.用戶登錄頁面RBlogin.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="bootstrap/js/jquery-1.11.2.min.js"></script>
        <script src="bootstrap/js/bootstrap.min.js"></script>
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
    </head>
    <style>
        .title{
            margin-left: 600px;
            margin-top: 150px;
        }
        .quanju{
            margin-left: 450px;
            margin-top: -180px;
        }
        .name,.pwd{
            max-width: 120px;
        }
        .yangshi1{
            margin-top: 200px;
        }
    </style>
    <body>        
<form class="form-horizontal" role="form" action="RBloginchuli.php" method="post">
    <h3 class="title">用戶登錄</h3>
    <div class="quanju">
            <div class="form-group yangshi1">
                <label for="firstname" class="col-sm-2 control-label">用戶名:</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control name" name="uid" placeholder="請輸入用戶名">
                </div>
            </div>
            <div class="form-group yangshi2">
                <label for="lastname" class="col-sm-2 control-label">密碼:</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control pwd" name="pwd" placeholder="請輸入密碼">
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <div class="checkbox">
                        <label>
                        <input type="checkbox">
                        保存密碼 </label>
                        <label>
                        <input type="checkbox">
                        下次自動登錄 </label>
                    </div>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-warning" value="登錄" onclick="return login()" >
                    登錄
                    </button>
                    
                </div>
            </div>
        </div>    
    </form>        
    </body>
</html>

4.登錄頁面的處理頁面RBloginchuli.php

<?php
session_start();
$uid = $_POST["uid"];
$pwd = $_POST["pwd"];
require_once "./DBDA.class.php";
$db = new DBDA();
$sql = "select pwd from users where uid='{$uid}'";
$mm = $db->StrQuery($sql,0);
if(!empty($pwd) && $pwd==$mm){
    $_SESSION["uid"] = $uid;
    header("location:RBmain.php");
}else{
    echo "<script>alert('用戶名或密碼有誤!')</script>";
}

5.最后做用戶的主頁面RBmain.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>權限主頁面</title>        
    </head>
    <body>
        <?php
        session_start();
        if(empty($_SESSION["uid"])){
            header("location:RBlogin.php");
            exit;
        }
        $uid = $_SESSION["uid"];
        
        require_once "./DBDA.class.php";
        $db = new DBDA();
        //子查詢
        $sql = "select * from roleswork where code in (select * from roles_roleswork where rolesuid in (select * from users_roles where usersuid='{$uid}'))";
        $arr = $db->query($sql,0);
        foreach($arr as $v){
            echo "<div class='menu'>{$v[1]}</div>";
        }        
        ?>
                
    </body>
</html>

效果如圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM