关于PHP权限设计
描述:想做一个PHP的权限菜单、根据不同的用户登录从数据库中循环出不同的主菜单及子菜单
数据库结构如下
cfg_useraccount \\存储用户信息
cfg_role \\存储角色信息
cfg_resource \\存储菜单信息
cfg_permission \\角色拥有的权限
现在是可以通过登录时获取的用户ID、取到该用户所拥有的主菜单、但是如果取到该用户所拥有的子菜单呢、一般对于子菜单应该如何处理?暂时没有啥头绪
\\select a.RoleID,b.ResourceName,b.URL from cfg_permission a join cfg_resource b on a.ResourceID=b.ResourceID where RoleID in (select RoleID from cfg_useraccount where username='admin');
- PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//数据库CIMcreate database cim default charset=utf8;//用户表create table cfg_UserAccount( ID int(4) NOT NULL PRIMARY KEY AUTO_INCREMENT, UserName varchar(20), PassWord varchar(20), MobilePhone varchar(20), CreateTM varchar(20), UpdateTM varchar(20), RoleID int(4)) DEFAULT CHARSET=UTF8;//数据格式及插入测试数据insert into cfg_UserAccount (UserName,PassWord,MobilePhone,CreateTM,RoleID) values('admin','111111','15957118564','2011-12-30','10');insert into cfg_UserAccount (UserName,PassWord,MobilePhone,CreateTM,RoleID) values('刘成','111111','15957118564','2011-12-30','20');insert into cfg_UserAccount (UserName,PassWord,MobilePhone,CreateTM,RoleID) values('邹琼芳','111111','13735862872','2011-12-30','30');//角色表create table cfg_Role( RoleID int(4), RoleName varchar(20), Remark varchar(20))DEFAULT CHARSET=UTF8;//插入测试数据insert into cfg_Role(RoleID,RoleName,Remark) values('10','超级管理员','具有系统所有权限');insert into cfg_Role(RoleID,RoleName,Remark) values ('20','技术部','具有客服管理等权限');insert into cfg_Role(RoleID,RoleName,Remark) values('30','部门经理','具有修改资料的权限');insert into cfg_Role(RoleID,RoleName,Remark) values('40','财务经理','统计考勤及奖金'); //资源表create table cfg_Resource(ResourceID int(4),ResourceName varchar(20),Remark varchar(20),URL varchar(100),);insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('100','客服管理','对日常客服记录进行管理','SeviceManager.php');insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('101','客服子菜单1','对日常客服记录进行管理','SeviceManager.php?action=add');insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('102','客服子菜单2','对日常客服记录进行管理','SeviceManager.php?action=del');insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('200','会员管理','会员新增和查询','MemberService.php');insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('300','查询管理','查询管理','Search.php');insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('400','回访管理','对客服记录进行回访','Visit.php');insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('500','知识库','产品FAQ','Knowledge.php');insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('600','数据管理','数据备份统计相关','Backup.php');insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('700','硬件返修','硬件产品返修','Repair.php');insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('800','系统管理','系统管理相关','System.php');create table cfg_Permission(RoleID int(4),ResourceID int(4))//权限表insert into cfg_Permission (RoleID,ResourceID) values('10','100');insert into cfg_Permission (RoleID,ResourceID) values('10','200');insert into cfg_Permission (RoleID,ResourceID) values('10','300');insert into cfg_Permission (RoleID,ResourceID) values('10','400');insert into cfg_Permission (RoleID,ResourceID) values('10','500');insert into cfg_Permission (RoleID,ResourceID) values('10','600');insert into cfg_Permission (RoleID,ResourceID) values('10','700');insert into cfg_Permission (RoleID,ResourceID) values('10','800');
------解决方案--------------------
一些建议
1.表似乎可以合并成一个
2.关于权限,你可以在读取权限后赋值给session
然后根据权限include 菜单/子菜单内容
权限判断当然是要用到if 的,这是应该让php来做的,而不是让mysql来"读取"的.
将权限判断写成一个类,然后include不同的文件就好了
------解决方案--------------------

PHP bleibt ein leistungsstarkes und weit verbreitetes Tool in der modernen Programmierung, insbesondere im Bereich der Webentwicklung. 1) PHP ist einfach zu bedienen und nahtlos in Datenbanken integriert und für viele Entwickler die erste Wahl. 2) Es unterstützt die Erzeugung der dynamischen Inhalte und die objektorientierte Programmierung, die für die schnelle Erstellung und Wartung von Websites geeignet sind. 3) Die Leistung von PHP kann verbessert werden, indem Datenbankabfragen zwischengespeichert und optimiert werden, und die umfangreiche Community und sein reiches Ökosystem machen es im heutigen Technologiestack immer noch wichtig.

In PHP werden schwache Referenzen in der WeaPreference -Klasse implementiert und verhindern nicht, dass der Müllsammler Objekte zurückerobern. Schwache Referenzen eignen sich für Szenarien wie Caching -Systeme und Event -Hörer. Es ist zu beachten, dass es das Überleben von Objekten nicht garantieren kann und dass die Müllsammlung möglicherweise verzögert wird.

Mit der \ _ \ _ -Invoke -Methode können Objekte wie Funktionen bezeichnet werden. 1. Definieren Sie die Methode \ _ \ _, damit das Objekt aufgerufen werden kann. 2. Bei Verwendung der Syntax $ OBJ (...) wird PHP die Methode \ _ \ _ aufrufen. 3.. Geeignet für Szenarien wie Protokollierung und Taschenrechner, Verbesserung der Codeflexibilität und Lesbarkeit.

Fasern wurde in Php8.1 eingeführt, wodurch die gleichzeitigen Verarbeitungsfunktionen verbessert wurden. 1) Fasern ist ein leichtes Parallelitätsmodell, das Coroutinen ähnelt. 2) Sie ermöglichen es den Entwicklern, den Ausführungsfluss von Aufgaben manuell zu steuern, und eignen sich zum Umgang mit E/O-intensiven Aufgaben. 3) Die Verwendung von Fasern kann effizientere und reaktionsschnelle Code schreiben.

Die PHP -Community bietet umfangreiche Ressourcen und Unterstützung, um Entwicklern zu helfen, zu wachsen. 1) Zu den Ressourcen gehören offizielle Dokumentation, Tutorials, Blogs und Open -Source -Projekte wie Laravel und Symfony. 2) Die Unterstützung kann durch Stackoverflow-, Reddit- und Slack -Kanäle erhalten werden. 3) Entwicklungstrends können durch Befolgung von RFC gelernt werden. 4) Die Integration in die Community kann durch aktive Teilnahme, Beitrag zum Code und Lernfreigabe erreicht werden.

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

PHP stirbt nicht, sondern sich ständig anpasst und weiterentwickelt. 1) PHP hat seit 1994 mehreren Versionen für die Version unterzogen, um sich an neue Technologietrends anzupassen. 2) Es wird derzeit in E-Commerce, Content-Management-Systemen und anderen Bereichen häufig verwendet. 3) PHP8 führt den JIT -Compiler und andere Funktionen ein, um die Leistung und Modernisierung zu verbessern. 4) Verwenden Sie Opcache und befolgen Sie die PSR-12-Standards, um die Leistung und die Codequalität zu optimieren.

Die Zukunft von PHP wird erreicht, indem sich an neue Technologietrends angepasst und innovative Funktionen eingeführt werden: 1) Anpassung an Cloud Computing, Containerisierung und Microservice -Architekturen, Unterstützung von Docker und Kubernetes; 2) Einführung von JIT -Compilern und Aufzählungsarten zur Verbesserung der Leistung und der Datenverarbeitungseffizienz; 3) die Leistung kontinuierlich optimieren und Best Practices fördern.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.