Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Rechteverwaltungsfunktion in PHP

So implementieren Sie die Rechteverwaltungsfunktion in PHP

一个新手
一个新手Original
2017-09-28 10:07:153199Durchsuche

Berechtigungsverwaltungssystem, das hauptsächlich zum Festlegen unterschiedlicher Berechtigungen für verschiedene Benutzer verwendet wird, sodass Benutzer mit unterschiedlichen Berechtigungen nach der Anmeldung unterschiedliche Funktionen verwenden können.

Erster Blick in die Datenbank

Es gibt insgesamt 5 Tabellen, Benutzer, Rollen und Rollenarbeit 3 Eine Tabelle bildet eine „w“-förmige Beziehung mit den anderen beiden Tabellen, was ebenfalls eine relativ häufige Berechtigungsdatenbankmethode ist. Zunächst werden die Berechtigungen festgelegt, dh die Verwaltung legt unterschiedliche Berechtigungen für verschiedene Benutzer fest.

1. Administratorseite 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>
        <p><select id="user">
            <? "./DBDA.class.php" =  = "select * from users" = ->query(,0(   "<option value=&#39;{[0]}&#39;>{[2]}</option>"?>
        </select>
        </p>    
        <br />
        <p><? = "select * from roles" = ->query(,0(   "<input type=&#39;checkbox&#39; class=&#39;ck&#39; value=&#39;{[0]}&#39;>{[1]}"?>
        </p>
        <br />
        <input type="button"  value="确认" id="btn"/>
    </body>
    <script>"#user").change("#btn").click( uid = $("#user"). ck = $(".ck" role = "";
            (i=0;i<ck.length;i++ v = ck.eq(i).(ck.eq(i).prop("checked"+= ck.eq(i).val()+"|".:"POST",:"RBbtnchuli.php",:{uid:uid,role:role},:"TEXT",:"修改成功!" uid = $("#user")..:"RBchuli.php",:{uid:uid},:"POST",:"TEXT",: role = data.("|" ck = $(".ck".prop("checked",(i=0;i<ck.length;i++ v = ck.eq(i).(role.indexOf(v)>=0.eq(i).prop("checked",</script>
</html>

2. Verarbeitungsseite des Administrators RBchuli.php

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

Rolleninformationsverarbeitungsseite RBbtnchuli .php speichern

<?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=&#39;{$uid}&#39;";
$db->query($sdel);
//添加
foreach($arr as $v){
	$sql = "insert into users_roles values(0,&#39;{$uid}&#39;,&#39;{$v}&#39;)";
	$db->query($sql);
}

Der Effekt ist wie folgt:

Als nächstes müssen Sie protokollieren Melden Sie sich bei einem Konto an und sehen Sie sich Ihre Funktionen an

3. Benutzeranmeldeseite 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>
    <p class="quanju">
            <p class="form-group yangshi1">
                <label for="firstname" class="col-sm-2 control-label">用户名:</label>
                <p class="col-sm-10">
                    <input type="text" class="form-control name" name="uid" placeholder="请输入用户名">
                </p>
            </p>
            <p class="form-group yangshi2">
                <label for="lastname" class="col-sm-2 control-label">密码:</label>
                <p class="col-sm-10">
                    <input type="text" class="form-control pwd" name="pwd" placeholder="请输入密码">
                </p>
            </p>
            <p class="form-group">
                <p class="col-sm-offset-2 col-sm-10">
                    <p class="checkbox">
                        <label>
                        <input type="checkbox">
                        保存密码 </label>
                        <label>
                        <input type="checkbox">
                        下次自动登录 </label>
                    </p>
                </p>
            </p>
            <p class="form-group">
                <p class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-warning" value="登录" onclick="return login()" >
                    登录                    
                    </button>
                    
                </p>
            </p>
        </p>    
    </form>        
    </body>
</html>

4 . Erstellen Sie abschließend die Hauptseite des Benutzers RBmain.php8b05045a5be5764f313ed5b9168a17e6

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


Der Effekt ist wie folgt:

<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=&#39; {
    $uid
}
&#39;))";
    $arr = $db->query($sql,0);
    foreach($arr as $v) {
    echo "<p class=&#39;menu&#39;> {
    $v[1]
}
</p>";
}
?> </body>
</html>

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Rechteverwaltungsfunktion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn