1. 程式人生 > >PHP之後臺使用者許可權管理設計

PHP之後臺使用者許可權管理設計

關於許可權管理資料庫需要用到多少張表這個問題,網上有的說是建立六張表,有的說建立五張表,其實大同小異,根據你自己設計的表字段。不過建立五張表:使用者表,角色表,許可權表(即後來的選單表),使用者角色表,許可權角色表。是最容易讓新人理解的。
我是建立了四張表。
使用者表(我把後面的使用者角色表整合到一個使用者表上了,所以少建一張表)
db_adminuser | CREATE TABLE `db_adminuser` (
  `a_id` tinyint(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `a_gid` tinyint(4) NOT NULL COMMENT '所屬群組(關聯群組表-db_admingroup)',
  `a_account` varchar(30) NOT NULL COMMENT '管理員賬號',
  `a_password` varchar(32) NOT NULL COMMENT '登陸密碼',
  `a_department` varchar(30) DEFAULT NULL COMMENT '部門',
  `a_username` varchar(20) NOT NULL COMMENT '管理員姓名',
  `a_number` varchar(30) DEFAULT NULL COMMENT '工號',
  `a_tel` varchar(20) DEFAULT NULL COMMENT '聯絡電話',
  `a_logtime` int(11) NOT NULL COMMENT '最後登入時間',
  `a_logip` varchar(25) NOT NULL COMMENT '最後登入IP',
  `a_ispermit` enum('0','1') NOT NULL DEFAULT '0' COMMENT '是否禁止 0:未,1:禁止登陸',
  `a_regtime` int(11) NOT NULL COMMENT '註冊時間',
  `shopid` int(11) DEFAULT '0' COMMENT '店鋪ID',
  `a_recly` enum('0','1') NOT NULL DEFAULT '0' COMMENT '是否回收 0代表沒有回收 1代表回收',
  PRIMARY KEY (`a_id`),
  UNIQUE KEY `a_account` (`a_account`)
) ENGINE=MyISAM AUTO_INCREMENT=154 DEFAULT CHARSET=utf8 COMMENT='使用者員表';
角色表:
db_admingroup | CREATE TABLE `db_admingroup` (
  `g_id` tinyint(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `g_name` varchar(30) NOT NULL COMMENT '角色名稱',
  `g_description` varchar(50) NOT NULL COMMENT '角色描述',
  `status` enum('1','0') NOT NULL DEFAULT '0' COMMENT '是否禁止 0:未,1:禁止登陸',
  PRIMARY KEY (`g_id`)
) ENGINE=MyISAM AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COMMENT='角色表' ;
許可權表
db_menu | CREATE TABLE `db_menu` (
  `m_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `m_pid` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '父ID,為0為頂級分類',
  `m_name` varchar(30) NOT NULL COMMENT '許可權英文名字',
  `m_url` varchar(100) NOT NULL COMMENT '許可權URL',
  `m_level` tinyint(3) NOT NULL DEFAULT '1' COMMENT '層次',
  `status` enum('0','1') NOT NULL DEFAULT '1' COMMENT '是否顯示(0:不顯示,1:顯示)',
  `m_remark` varchar(32) DEFAULT NULL COMMENT '樣式備註',
  `m_title` varchar(32) DEFAULT NULL COMMENT '許可權中文名字',
  `m_sort` tinyint(2) DEFAULT NULL COMMENT '排序',
  PRIMARY KEY (`m_id`)
) ENGINE=MyISAM AUTO_INCREMENT=494 DEFAULT CHARSET=utf8 COMMENT='許可權表' ;
角色許可權表
db_access | CREATE TABLE `db_access` (
  `a_gid` int(10) NOT NULL DEFAULT '0' COMMENT '角色id',
  `a_mid` int(10) NOT NULL DEFAULT '0' COMMENT '許可權id',
  `level` tinyint(2) DEFAULT NULL COMMENT '層次',
  `module` varchar(32) DEFAULT NULL COMMENT '模組'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT '角色許可權表';


以上是我用到的表。
大體設計思路是。
1 建立角色,例如:管理員
2 建立使用者  隸屬於哪個組
3 新增許可權
4 給角色分配許可權
5 然後關聯表 得到某個使用者所具有的許可權

注意:以上基本上部分先後順序。

以上只是自己的體會,只是想記錄下自己的程式設計之旅。