recherche
Maisondéveloppement back-endtutoriel phpExplication détaillée des autorisations RBAC de PHP

Cet article partage principalement avec vous l'explication détaillée des autorisations RBAC de PHP. J'espère qu'il pourra aider tout le monde. Tout d'abord, nous devons savoir quelles fonctions sont requises pour la gestion des autorisations :

(1) Les utilisateurs peuvent. accéder uniquement aux contrôles spécifiés. Contrôleur, méthode spécifiée

(2) Les utilisateurs peuvent exister dans plusieurs groupes d'utilisateurs

(3) Les groupes d'utilisateurs peuvent être sélectionnés, contrôleur spécifié, méthode spécifiée

(4) Vous pouvez ajouter des contrôleurs et des méthodes

RBAC (Role-Based Access Control, contrôle d'accès basé sur les rôles), ce qui signifie que les utilisateurs sont associés à des rôles et des autorisations. En termes simples, un utilisateur a plusieurs rôles et chaque rôle dispose de plusieurs autorisations. De cette manière, un modèle d'autorisation de type « permission de rôle d'utilisateur » est construit. Dans ce modèle, il existe généralement une relation plusieurs-à-plusieurs entre les utilisateurs et les rôles, ainsi qu'entre les rôles et les autorisations.

1. Conception de la base de données

Écrivez d'abord cinq tables : table des utilisateurs, table des rôles, table des fonctions :

Le tableau de la table de connexion...Ensuite il y a la table des fonctions de rôle et la table des rôles de l'utilisateur :

2. Page de gestion de l'administrateur,

(1). Afficher respectivement le nom d'utilisateur et le nom de rôle

(2). modifiez le rôle dans la case à cocher correspondante

(3). Lors de la modification du rôle d'un utilisateur, supprimez d'abord la table des rôles correspondant de l'utilisateur et toutes les informations sur cet utilisateur, puis ajoutez le nom d'utilisateur et le code de rôle obtenus.

Utiliser la liste déroulante : intégrer la requête php et la parcourir, l'afficher sous forme de liste déroulante

Explication détaillée des autorisations RBAC de PHP

<select></select>

Explication détaillée des autorisations RBAC de PHP

  <?php     include ("../db.class.php");    $db = new db();    $sql = "select * from qxyh";    $arr = $db->Query($sql);    foreach ($arr as $v)
    {        echo "<option>{$v[2]}</option>";
    }    ?>

Explication détaillée des autorisations RBAC de PHP


Explication détaillée des autorisations RBAC de PHP

Sélectionnez le personnage à l'aide de la zone de sélection multiple :

Explication détaillée des autorisations RBAC de PHP

<p>请选择角色<?php $sjs = "select * from qxzw";$ajs = $db->Query($sjs);foreach ($ajs as $v)
{    echo "<input>{$v[1]} ";
}?>
</p>
<input>

Explication détaillée des autorisations RBAC de PHP

Image :

Lorsque l'utilisateur change, le le rôle correspondant change également. Modifiez en conséquence et modifiez les informations sur le rôle de la personne, ajoutez et enregistrez. L'idée de base de l'ajout et de l'enregistrement est d'abord de supprimer toutes les informations de rôle correspondant à la personne dans la base de données, puis de récupérer la partie sélectionnée et. ajoutez-le à la base de données.

Laissez-le d'abord sélectionner le rôle par défaut :

<script>  //选中默认角色
    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>

pour écrire sa page de traitement :

<?phpinclude ("../db.class.php");$db = new db();$type = $_POST["type"];switch ($type)
{    case 0:        $uid = $_POST["uid"];        $sql = "select jid from qxyhzw WHERE uid=&#39;{$uid}&#39;";        echo $db->strQuery($sql);break;
}

Jetons un œil au résultat final, et vous entrez après une connexion réussie Page d'accueil, l'échec de la connexion provoquera une erreur

Encore une fois, bouton Enregistrer :

<script>//当用户变化的时候去选中相应角色
        $("#user").change(function(){
            xuan();
        })        //点击确定保存角色信息
        $("#btn").click(function(){            var uid = $("#user").val();            //找到用户名
            var juese = "";//           找到角色代号
            var ck = $(".ck");            //找到所有的checked
            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("修改成功");
                }
            });

        })
    });</script>

Traiter la page :

<?phpinclude ("../db.class.php");$db = new db();$type = $_POST["type"];switch ($type)
{ 
   case 1:        $uid = $_POST["uid"];        $juese = $_POST["juese"];        //        首先全部删掉里面的职位
        $sdel = "delete from qxyhzw WHERE uid = &#39;{$uid}&#39;";        $db->Query($sdel,0);        //拆分取到的字符串
        $arr= explode("|",$juese);        foreach ($arr as $v)
        {            $sql = "insert into qxyhzw VALUES (&#39;&#39;,&#39;{$uid}&#39;,&#39;{$v}&#39;)";            $db->query($sql,0);
        }        echo "ok";        break;
}

Voir l'effet :

Le personnage est sélectionné par défaut

Choisissez d'enregistrer après modification :

Code total de la page de gestion :

Voir le code

Code total de la page de traitement :

<?phpinclude ("../db.class.php");$db = new db();$type = $_POST["type"];switch ($type)
{    case 0:        $uid = $_POST["zhang"];        $sql = "select jid from qxyhzw WHERE uid=&#39;{$uid}&#39;";        echo $db->strQuery($sql);break;    case 1:        $uid = $_POST["zhang"];        $juese = $_POST["juese"];        //        首先全部删掉里面的职位
        $sdel = "delete from qxyhzw WHERE uid = &#39;{$uid}&#39;";        $db->Query($sdel,0);        //拆分取到的字符串
        $arr= explode("|",$juese);        foreach ($arr as $v)
        {            $sql = "insert into qxyhzw VALUES (&#39;&#39;,&#39;{$uid}&#39;,&#39;{$v}&#39;)";            $db->query($sql,0);
        }        echo "ok";        break;
}

3. Page de connexion :

L'affichage est très simple :

<form action="drcl.php" method="post">
    <p>帐号:<input type="text" name="zhang"/></p>
    <p>密码:<input type="text" name="mi"/></p>
    <input type="submit" value="登入"/></form>

Écrire le traitement de connexion

<?phpsession_start();include ("../db.class.php");$db = new db();$zhang = $_POST["zhang"];$mi = $_POST["mi"];$sql = "select mi from qxyh WHERE zhang = &#39;{$zhang}&#39;";$mm = $db->strQuery($sql)>0;if($mm = $mi && !empty($mi))
{    $_SESSION["zhang"] = $zhang;    header("location:chaxun.php");
}//else
//{
//    echo "登入失败";
//}

Aller à la page principale , le code de la page principale :

La page principale de chacun est différente

<body><h1 id="主页面">主页面</h1>
<?phpsession_start();include ("../db.class.php");$db = new db();$zhang = "";if(empty($_SESSION["zhang"]))
{    header("location:qx_dr.php");    exit;
}//登入者用户名
    $zhang = $_SESSION["zhang"];//根据用户名查角色$sql = "select jid from qxyhzw WHERE uid = &#39;{$zhang}&#39;";$aql = $db->Query($sql);//根据角色代号查功能代号$attr = array();//定义一个存放功能代号的数组foreach ($aql as $v)
{   $jsid = $v[0];// 角色代号
    $ssql = "select rid from qxgnzw WHERE jid=&#39;{$jsid}&#39;";    $aaql = $db->strQuery($ssql);//拆分
    $adai = explode("|",$aaql);    foreach ($adai as $h)
    {       array_push($attr,$h);
    }
}$attr = array_unique($attr);//去重
//显示foreach ($attr as $k)
{    $ql = "select * from qxgn WHERE code = &#39;{$k}&#39;";    $arr = $db->Query($ql);    $arr[0][0];    $arr[0][1];    echo "<p code=&#39;{$arr[0][0]}&#39;>{$arr[0][1]}</p>";
}?>
</body>

L'expérience utilisateur de l'utilisation de php n'est pas bonne , il est préférable d'utiliser ajax.

Recommandations associées :

Gestion des accès du personnel php (RBAC)

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!

Déclaration
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
Statut actuel de PHP: un regard sur les tendances de développement WebStatut actuel de PHP: un regard sur les tendances de développement WebApr 13, 2025 am 12:20 AM

Le PHP reste important dans le développement Web moderne, en particulier dans la gestion de contenu et les plateformes de commerce électronique. 1) PHP a un écosystème riche et un fort soutien-cadre, tels que Laravel et Symfony. 2) L'optimisation des performances peut être obtenue via Opcache et Nginx. 3) PHP8.0 introduit le compilateur JIT pour améliorer les performances. 4) Les applications natives dans le cloud sont déployées via Docker et Kubernetes pour améliorer la flexibilité et l'évolutivité.

PHP vs autres langues: une comparaisonPHP vs autres langues: une comparaisonApr 13, 2025 am 12:19 AM

PHP convient au développement Web, en particulier dans le développement rapide et le traitement du contenu dynamique, mais n'est pas bon dans les applications de la science des données et de l'entreprise. Par rapport à Python, PHP présente plus d'avantages dans le développement Web, mais n'est pas aussi bon que Python dans le domaine de la science des données; Par rapport à Java, PHP fonctionne moins bien dans les applications au niveau de l'entreprise, mais est plus flexible dans le développement Web; Par rapport à JavaScript, PHP est plus concis dans le développement back-end, mais n'est pas aussi bon que JavaScript dans le développement frontal.

PHP vs Python: fonctionnalités et fonctionnalités de basePHP vs Python: fonctionnalités et fonctionnalités de baseApr 13, 2025 am 12:16 AM

PHP et Python ont chacun leurs propres avantages et conviennent à différents scénarios. 1.PHP convient au développement Web et fournit des serveurs Web intégrés et des bibliothèques de fonctions riches. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et une bibliothèque standard puissante. Lors du choix, il doit être décidé en fonction des exigences du projet.

PHP: un langage clé pour le développement WebPHP: un langage clé pour le développement WebApr 13, 2025 am 12:08 AM

PHP est un langage de script largement utilisé du côté du serveur, particulièrement adapté au développement Web. 1.Php peut intégrer HTML, traiter les demandes et réponses HTTP et prend en charge une variété de bases de données. 2.PHP est utilisé pour générer du contenu Web dynamique, des données de formulaire de traitement, des bases de données d'accès, etc., avec un support communautaire solide et des ressources open source. 3. PHP est une langue interprétée, et le processus d'exécution comprend l'analyse lexicale, l'analyse grammaticale, la compilation et l'exécution. 4.PHP peut être combiné avec MySQL pour les applications avancées telles que les systèmes d'enregistrement des utilisateurs. 5. Lors du débogage de PHP, vous pouvez utiliser des fonctions telles que error_reportting () et var_dump (). 6. Optimiser le code PHP pour utiliser les mécanismes de mise en cache, optimiser les requêtes de base de données et utiliser des fonctions intégrées. 7

PHP: la fondation de nombreux sites WebPHP: la fondation de nombreux sites WebApr 13, 2025 am 12:07 AM

Les raisons pour lesquelles PHP est la pile technologique préférée pour de nombreux sites Web incluent sa facilité d'utilisation, son soutien communautaire solide et son utilisation généralisée. 1) Facile à apprendre et à utiliser, adapté aux débutants. 2) Avoir une énorme communauté de développeurs et des ressources riches. 3) Largement utilisé dans WordPress, Drupal et d'autres plateformes. 4) Intégrez étroitement aux serveurs Web pour simplifier le déploiement du développement.

Au-delà du battage médiatique: évaluer le rôle de PHP aujourd'huiAu-delà du battage médiatique: évaluer le rôle de PHP aujourd'huiApr 12, 2025 am 12:17 AM

PHP reste un outil puissant et largement utilisé dans la programmation moderne, en particulier dans le domaine du développement Web. 1) PHP est facile à utiliser et intégré de manière transparente aux bases de données, et est le premier choix pour de nombreux développeurs. 2) Il prend en charge la génération de contenu dynamique et la programmation orientée objet, adaptée à la création et à la maintenance des sites Web rapidement. 3) Les performances de PHP peuvent être améliorées en mettant en cache et en optimisant les requêtes de base de données, et sa vaste communauté et son écosystème riche le rendent toujours important dans la pile technologique d'aujourd'hui.

Quelles sont les références faibles en PHP et quand sont-elles utiles?Quelles sont les références faibles en PHP et quand sont-elles utiles?Apr 12, 2025 am 12:13 AM

En PHP, les références faibles sont mises en œuvre via la classe FaibleRreference et n'empêcheront pas le collecteur des ordures de récupérer des objets. Les références faibles conviennent aux scénarios tels que les systèmes de mise en cache et les auditeurs d'événements. Il convient de noter qu'il ne peut garantir la survie des objets et que la collecte des ordures peut être retardée.

Expliquez la méthode magique __invoke en PHP.Expliquez la méthode magique __invoke en PHP.Apr 12, 2025 am 12:07 AM

La méthode \ _ \ _ Invoke permet aux objets d'être appelés comme des fonctions. 1. Définissez la méthode \ _ \ _ Invoquer afin que l'objet puisse être appelé. 2. Lorsque vous utilisez la syntaxe $ obj (...), PHP exécutera la méthode \ _ \ _ Invoke. 3. Convient pour des scénarios tels que la journalisation et la calculatrice, l'amélioration de la flexibilité et de la lisibilité du code.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser