PHP combiné avec MySQL pour réaliser la gestion des autorisations

韦小宝
Libérer: 2023-03-20 17:24:02
original
3156 Les gens l'ont consulté

Dans notre développement PHP actuel, il est très important de gérer les autorisations des utilisateurs. Pour définir différentes autorisations pour différents utilisateurs, nous utiliserons inévitablement la base de données mysql. Dans cet article, nous expliquerons comment fonctionne PHP en combinant mysql pour implémenter la gestion des autorisations.

Aujourd'hui, nous implémentons principalement un système de gestion des autorisations. Il s'agit principalement de définir différentes autorisations pour différents utilisateurs, afin que les utilisateurs avec des autorisations différentes puissent utiliser différentes fonctions après s'être connectés. Tout d'abord, jetons un coup d'œil à la base de données

Il y a un total de 5 tables. Les 3 tables qx_user, qx_rules et qx_juese forment une relation en forme de "w" avec les 2 autres tables. C'est également une méthode de base de données d'autorisations courante. Tout d'abord, définissez les autorisations. la direction définit différentes autorisations pour différents utilisateurs.

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>
Copier après la connexion


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;
}
Copier après la connexion


L'effet obtenu est celui indiqué dans la figure :

Je peux choisir quel utilisateur définir les autorisations et donnez-lui un Le rôle peut être un ou plusieurs. Cliquez sur OK pour accorder l'autorisation dans la base de données.

Par exemple : Ma Qi elle-même a deux rôles : la réception et le marché

Maintenant, supprimez la réception et ajoutez les finances

Ensuite, voyons si la base de données a été ajoutée

L'élément Ma Qi a été modifié, j003 et j004 sont les rôles marketing et financier .

La prochaine chose à faire est de vous connecter à un compte et de consulter vos fonctions

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>
Copier après la connexion


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");
}
Copier après la connexion


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>
Copier après la connexion


L'effet terminé est comme indiqué sur l'image :

Il montre que la fonction de John Doe est :

Vérifiez si la base de données est la même :

Trouvé Le résultat est le même. De cette façon, la gestion des autorisations est terminée. Vous pouvez bien regarder et pratiquer, cela nous sera d’une grande aide dans notre développement futur !


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!