Heim  >  Artikel  >  Backend-Entwicklung  >  PHP kombiniert mit MySQL, um eine Berechtigungsverwaltung zu erreichen

PHP kombiniert mit MySQL, um eine Berechtigungsverwaltung zu erreichen

韦小宝
韦小宝Original
2018-03-03 11:00:313082Durchsuche

In unserer eigentlichen PHP-Entwicklung ist es sehr wichtig, Benutzerberechtigungen zu verwalten. Um unterschiedliche Berechtigungen für verschiedene Benutzer festzulegen, werden wir zwangsläufig die MySQL-Datenbank verwenden. In diesem Artikel erklären wir, wie PHP zur Implementierung der Berechtigungsverwaltung funktioniert

Heute implementieren wir hauptsächlich ein Berechtigungsverwaltungssystem. Es dient hauptsächlich dazu, unterschiedliche Berechtigungen für verschiedene Benutzer festzulegen, damit Benutzer mit unterschiedlichen Berechtigungen nach der Anmeldung unterschiedliche Funktionen nutzen können. Werfen wir zunächst einen Blick auf die Datenbank

Es gibt insgesamt 5 Tabellen qx_user, qx_rules und qx_juese. Es ist auch eine gemeinsame Berechtigungsdatenbankmethode. Das Management legt unterschiedliche Berechtigungen für verschiedene Benutzer fest.

guanli.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="../../dist/js/jquery-1.11.2.min.js"></script>
</head>

<body>

<h1>用户与角色管理</h1>
<p>
请选择用户:
    <select id="user">
        <?php
        include("../../fengzhuang/DBDA.class.php");
        $db = new DBDA();
        $sql = "select * from qx_user";
        $arr = $db->Query($sql);
        foreach($arr as $v)
        {
            echo "<option value=&#39;{$v[0]}&#39;>{$v[2]}</option>";
        }
        ?>
    </select>
</p>
<br />
<p>
请选择角色:
<?php
$sjs = "select * from qx_juese";
$ajs = $db->Query($sjs);
foreach($ajs as $v)
{
    echo "<input type=&#39;checkbox&#39; value=&#39;{$v[0]}&#39; class=&#39;ck&#39; />{$v[1]} ";
}
?>
</p>
<br />

<input type="button" value="确定" id="btn" />

</body>
<script type="text/javascript">
$(document).ready(function(e) {
    //选中默认角色
    Xuan();
    //当用户选中变化的时候,去选中相应角色
    $("#user").change(function(){
            Xuan();
        })
    //点击确定保存角色信息
    $("#btn").click(function(){
            var uid = $("#user").val();
            var juese = "";
            var ck = $(".ck");
            for(var i=0;i<ck.length;i++)
            {
                if(ck.eq(i).prop("checked"))
                {
                    juese += ck.eq(i).val()+"|";
                }
            }
            juese = juese.substr(0,juese.length-1);
            $.ajax({
                    url:"chuli.php",
                    data:{uid:uid,juese:juese,type:1},
                    type:"POST",
                    dataType:"TEXT",
                    success: function(data){
                            alert("保存成功!");
                        }
                });
        })
});
//选中默认角色
function Xuan()
{
    var uid = $("#user").val();
    $.ajax({
        url:"chuli.php",
        data:{uid:uid,type:0},
        type:"POST",
        dataType:"TEXT",
        success: function(data){
                var juese = data.trim().split("|");
                var ck = $(".ck");
                ck.prop("checked",false);
                for(var i=0;i<ck.length;i++)
                {
                    if(juese.indexOf(ck.eq(i).val())>=0)
                    {
                        ck.eq(i).prop("checked",true);
                    }
                }
                
            }
        });
}
</script>
</html>


chuli.php


<?php
include("../../fengzhuang/DBDA.class.php");
$db = new DBDA();

$type = $_POST["type"];

switch($type)
{
    case 0:
        $uid = $_POST["uid"];
        $sql = "select jueseid from qx_uij where useid=&#39;{$uid}&#39;";
        echo $db->StrQuery($sql);
        break;
    case 1:
        $uid = $_POST["uid"];
        $juese = $_POST["juese"];
        $sdel = "delete from qx_uij where useid='{$uid}'";
        $db->Query($sdel,0);
        $arr = explode("|",$juese);
        foreach($arr as $v)
        {
            echo $v;
            $sql = "insert into qx_uij values('','{$uid}','{$v}')";
            $db->Query($sql,0);
        }
        echo "OK";
        break;
}


Der erzielte Effekt ist wie in der Abbildung dargestellt:

Ich kann auswählen, für welchen Benutzer Berechtigungen festgelegt werden sollen Geben Sie ihm eine oder mehrere Rollen. Klicken Sie auf OK, um die Berechtigung in der Datenbank zu erteilen.

Zum Beispiel: Ma Qi selbst hat zwei Rollen: Rezeption und Markt

Löschen Sie nun die Rezeption und fügen Sie Finanzen hinzu

Dann schauen wir mal, ob die Datenbank hinzugefügt wurde

Der Artikel Ma Qi wurde geändert, j003 und j004 sind die Marketing- und Finanzrollen .

Als nächstes müssen Sie sich bei einem Konto anmelden und Ihre Funktionen anzeigen

login.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<h1>登录页面</h1>
<form action="logincl.php" method="post">
<input type="text" name="uid" />
<input type="password" name="pwd" />
<input type="submit" value="登录" />
</form>
</body>
</html>


logincl.php


<?php
session_start();
include("../../fengzhuang/DBDA.class.php");
$db = new DBDA();
$uid = $_POST["uid"];
$pwd = $_POST["pwd"];

$sql="select pwd from qx_user where uid=&#39;{$uid}&#39;";
$mm = $db->StrQuery($sql); 

if($mm==$pwd && !empty($pwd))
{
    $_SESSION["uid"]=$uid;
    header("location:main.php");
}


main.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>

<h1>主页面</h1>
<?php
session_start();
include("../../fengzhuang/DBDA.class.php");
$db = new DBDA();

if(empty($_SESSION["uid"]))
{
    header("location:login.php");
    exit;
}
//登录者用户名
$uid = $_SESSION["uid"];

//根据用户名查角色
$sjs = "select jueseid from qx_uij where useid=&#39;{$uid}&#39;";
$ajs = $db->Query($sjs);
//定义一个存放功能代号的数组
$arr = array();
//根据角色代号查功能代号
foreach($ajs as $vjs)
{
        $jsid = $vjs[0]; //角色代号
        $sgn = "select ruleid from qx_jwr where jueseid='{$jsid}'";
        $strgn = $db->StrQuery($sgn);
        $agn = explode("|",$strgn);
        
        foreach($agn as $vgn)
        {
            array_push($arr,$vgn);
        }    
}
//去重,显示
$arr = array_unique($arr);
foreach($arr as $v)
{
    $sql = "select * from qx_rules where code='{$v}'";
    $attr = $db->Query($sql);
    
    $attr[0][0]; $attr[0][1];
    
    echo "<p code=&#39;{$attr[0][0]}&#39;>{$attr[0][1]}</p>";
}
?>
</body>
</html>


Der fertige Effekt ist wie im Bild gezeigt:

Es zeigt, dass die Funktion von John Doe lautet:

Überprüfen Sie, ob die Datenbank dieselbe ist:

Gefunden Das Ergebnis ist das gleiche. Damit ist die Berechtigungsverwaltung abgeschlossen. Sie können einen guten Blick darauf werfen und üben, es wird für unsere zukünftige Entwicklung eine große Hilfe sein!


Das obige ist der detaillierte Inhalt vonPHP kombiniert mit MySQL, um eine Berechtigungsverwaltung zu erreichen. 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