>  기사  >  백엔드 개발  >  PHP의 RBAC 권한에 대한 자세한 설명

PHP의 RBAC 권한에 대한 자세한 설명

小云云
小云云원래의
2018-03-22 10:16:382485검색

이 글은 주로 PHP의 RBAC 권한에 대한 자세한 설명을 공유합니다. 모든 사람에게 도움이 되기를 바랍니다. 먼저 권한 관리에 필요한 기능이 무엇인지 알아야 합니다.

  (1) 사용자는 지정된 컨트롤러에만 액세스할 수 있습니다. 지정된 방법

  (2) 사용자는 여러 사용자 그룹에 존재할 수 있습니다

  (3) 사용자 그룹은 지정된 컨트롤러와 지정된 방법을 선택할 수 있습니다

   (4) 컨트롤러 및 방법을 추가할 수 있습니다

RBAC(Role-Based Access Control(role-Based Access Control) 기반 액세스 제어)는 사용자가 역할을 통해 권한과 연결됨을 의미합니다. 간단히 말해서 사용자에게는 여러 역할이 있고 각 역할에는 여러 권한이 있습니다. 이러한 방식으로 "사용자 역할 권한" 권한 부여 모델이 구성됩니다. 이 모델에서는 일반적으로 사용자와 역할, 역할과 권한 사이에 다대다 관계가 있습니다.

1. 데이터베이스 설계

5개의 테이블을 작성합니다. 먼저 사용자 테이블, 역할 테이블, 기능 테이블:

연결 테이블 테이블.. 그런 다음 역할 기능 테이블 및 사용자 역할 테이블:

2. 관리자 관리 페이지

(1) 드롭다운 사용자 이름 변경에 따라 사용자 이름과 역할 이름을 각각 표시합니다. 해당 체크박스

(3) 사용자의 역할을 수정하는 경우 먼저 해당 사용자의 해당 역할 테이블과 해당 사용자에 대한 모든 정보를 삭제한 후 획득한 사용자 이름과 역할 코드를 추가하세요.

드롭다운 목록 사용: PHP 쿼리를 포함하고 이를 탐색하여 드롭다운 목록으로 표시합니다. 다중 선택 상자:

PHP의 RBAC 권한에 대한 자세한 설명

<select></select>

PHP의 RBAC 권한에 대한 자세한 설명

그림: PHP의 RBAC 권한에 대한 자세한 설명

사용자가 변경되면 그에 따라 해당 역할도 변경되며, 그 사람의 역할 정보도 변경되며, 기본 아이디어는 추가 및 저장은 먼저 해당 인물을 데이터베이스에 추가하고 해당 역할 정보를 모두 삭제한 후 선택한 부분을 검색하여 데이터베이스에 추가하는 것입니다. PHP의 RBAC 권한에 대한 자세한 설명

먼저 기본 역할을 선택하도록 합니다.

  <?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>";
    }    ?>
처리 페이지를 작성하려면:

최종 결과를 살펴보겠습니다. 로그인에 성공하면 홈페이지에 들어가게 됩니다. 메시지가 표시됩니다

PHP의 RBAC 권한에 대한 자세한 설명

PHP의 RBAC 권한에 대한 자세한 설명다시 와서 저장 버튼:

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

처리 페이지:

<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>

효과 보기:

기본 선택 문자:

변경 후 저장 선택:

관리 페이지 전체 코드:

코드 보기

처리 전체 페이지 코드:

<?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;
}

3. 로그인 페이지:

표시는 매우 간단합니다:

<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>

로그인 처리 쓰기

<?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;
}
메인 페이지로 이동 , 메인 페이지 코드:

모든 사람의 메인 페이지는 다릅니다

<?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;
}
<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>
<?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 "登入失败";
//}

PHP를 사용하는 사용자 경험은 좋지 않습니다. Ajax를 사용하는 것이 가장 좋습니다.

관련 권장 사항:

php 인사 접근 관리(RBAC)

위 내용은 PHP의 RBAC 권한에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.