백엔드 개발 PHP 튜토리얼 php如何实现人员权限管理

php如何实现人员权限管理

Jun 06, 2016 pm 08:40 PM
php 역할 권한

php实现人员权限管理的方法:首先做一个管理员的页面,并实现选择用户的功能;然后用jquery的函数实现选择相应用户功能;接着创建处理页面【chuli.php】;最后修改用户对应的角色并保存即可。

php如何实现人员权限管理

php如何实现人员权限管理?

php实现人员权限管理(管理员页面)

控制人员权限用的最多的应该是OA办公自动化系统和像ERP,CRM,CMS这样的管理系统,就是通过控制用户的权限来控制其拥有的角色和功能,比如管理员可以拥有所有权限和功能,前台只能拥有登记和通报信息等。

一般标准的权限管理都会有5张数据表来控制,形成一个W型的连接关系,如下

         企业微信截图_15923613041799.png

 

看看表的结构

1.用户表 2.用户角色对应表 3.角色表 4.角色功能对应表 5.功能表

 

首先我们来做一个管理员的页面,这个页面能显示所有用户,并且能看到他们对应的角色,这里我们还能修改他们的角色,先看看效果

 

 一步步来,先写出来选择用户的功能,当然,显示的用户都是从用户表里加载过来的

请选择用户:
  <select id="sel">
      <option>请选择</option>
    <?php
    require "../DataBase.class.php";
    $db=new DataBase();
    $sql="select * from users";
    $arr=$db->Query($sql);
    foreach($arr as $v){
        echo "<option value=&#39;{$v[0]}&#39;>{$v[2]}</option>";

        }
    ?>
  </select>
로그인 후 복사

再把角色的复选框写出来 ,附带那个保存按钮也写出来吧

请选择角色:
    <?php
    $sql2="select * from juese";
    $arr2=$db->Query($sql2);
    foreach($arr2 as $k){
        
        echo "<input type=&#39;checkbox&#39; class=&#39;ck&#39; value=&#39;{$k[0]}&#39;>$k[1]";
        
        }
    ?>



<div><input type="button" id="save"  value="保存"/></div>
로그인 후 복사

界面写完了,下面实现功能代码

功能1.选择相应用户,默认显示他对应的角色(复选框的默认选中)

用jquery的函数实现(页面开头先引入Jquery)

$("#sel").change(function (){
        var uid=$("#sel").val();       //取到下拉选择的用户
        $.ajax({                        //调用ajax
                url:"chuli.php",
                data:{uid:uid},
                type:"POST",
                dataType:"TEXT",
                success: function(data){
                        var js=data.trim().split("|");    //返回的字符串只有行,进行拆分和去空格,然后得到的是角色数组
                        var ck=$(".ck");                //获取所有复选框的值,交给了一个ck数组
                        ck.prop("checked",false);        //先清空上次选择用户时留下的复选内容
                        for(var i=0;i<ck.length;i++)    //遍历判断
                        {
                            var v=ck.eq(i).val();        //v代表的是每个复选框的值
                            if(js.indexOf(v)>=0){        //判断一下,返回的角色表中的数据是否存在,用的 indexOf方法,如果不存在则返回-1
                                ck.eq(i).prop("checked",true);  //将数据库存在的角色对应的属性设置为选中

                                }
                            }



                    }
            })

});
로그인 후 복사

下面是处理页面chuli.php

<?php
$uid=$_POST["uid"];
require "../DataBase.class.php";
$db=new DataBase();
$sql="select jueseid from userinjuese where userid=&#39;{$uid}&#39;";
echo $db->StrQuery($sql);



?>
로그인 후 복사

如果看不明白的话,看看这个返回字符串的类怎么写的

<?php
class DataBase
{
    public $host="localhost";
    public $uid = "root";
    public $pwd = "";
    public $dbname = "mydb";

    //成员方法
    public function Query($sql,$type=1)
    {
        $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
        $r = $db->query($sql);

        if($type==1)
        {
            return $r->fetch_all();
        }
        else
        {
            return $r;
        }
    }

    //返回字符串的方法
    public function StrQuery($sql,$type=1)
    {
        $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
        $r = $db->query($sql);

        if($type==1)
        {
            $attr = $r->fetch_all();
            $str = "";
            foreach($attr as $v)
            {
                $str .= implode("^",$v)."|";
            }

            return substr($str,0,strlen($str)-1);
           }

        else
        {
            return $r;
        }
    }

    //返回JSON
    public function jsonquery($sql,$type=1)
    {
        $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
        $r = $db->query($sql);

        if($type==1)
        {
            return json_encode($r->fetch_all(MYSQLI_ASSOC));
        }
        else
        {
            return $r;
        }
    }
}
로그인 후 복사

功能2.修改用户对应的角色,并且保存

$("#save").click(function (){        //&#39;保存&#39;按钮的点击事件
        var uid=$("#sel").val();    //获取下拉选择的用户
        var str="";
        var ck=$(".ck");            //获取所有复选框的值,放到ck数组
        for(var i=0;i<ck.length;i++)
        {
            if(ck.eq(i).prop("checked"))   //判断,如果复选框的值为选中
            {
                str+=ck.eq(i).val()+",";  //将选中的复选框值用“,”拼接起来交给str

                }



            }
        str=str.substr(0,str.length-1);  //截取一下str,因为最后尾部会多余一个符号
        $.ajax({
            url:"save.php",
            data:{uid:uid,js:str},          //将用户和拼接好的已选择复选内容交给处理页面
            dataType:"TEXT",
            type:"POST",
            success: function(data){

                alert("保存成功")

                }





            })




    })
로그인 후 복사

处理页面

<?php
$uid=$_POST["uid"];      //获取到了传递的用户
$js=$_POST["js"];        //获取到了传递过来的已选择的复选框内容
require "../DataBase.class.php";
$db=new DataBase();
$sql="delete from  userinjuese where userid=&#39;{$uid}&#39;"; //先把数据库中原来用户的角色清空,不然修改起来会麻烦
$db->Query($sql,0);
$vv=explode(",",$js);        //将复选框内容拆分,因为传来的是一个,隔开的长字符串,得到的vv是一个数组
foreach($vv as $v){         //遍历这个数组
$sql2="insert into userinjuese values(&#39;&#39;,&#39;{$uid}&#39;,&#39;{$v}&#39;)"; //依次写入数据库
    $db->Query($sql2,0);

}


?>
로그인 후 복사

功能完成了。结束

更多相关技术知识,请访问PHP中文网

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CakePHP 프로젝트 구성 CakePHP 프로젝트 구성 Sep 10, 2024 pm 05:25 PM

이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

cakephp4에서 날짜와 시간을 다루기 위해 사용 가능한 FrozenTime 클래스를 활용하겠습니다.

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

파일 업로드 작업을 위해 양식 도우미를 사용할 것입니다. 다음은 파일 업로드의 예입니다.

CakePHP 라우팅 CakePHP 라우팅 Sep 10, 2024 pm 05:25 PM

이번 장에서는 라우팅과 관련된 다음과 같은 주제를 학습하겠습니다.

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP 데이터베이스 작업 CakePHP 데이터베이스 작업 Sep 10, 2024 pm 05:25 PM

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP 유효성 검사기 만들기 CakePHP 유효성 검사기 만들기 Sep 10, 2024 pm 05:26 PM

컨트롤러에 다음 두 줄을 추가하면 유효성 검사기를 만들 수 있습니다.

See all articles