黑马程序员技术交流社区
标题: 【黑马程序员杭州】PHP项目day04--实现权限认证 [打印本页]
作者: 小江哥 时间: 2017-12-5 17:02
标题: 【黑马程序员杭州】PHP项目day04--实现权限认证
本帖最后由 小江哥 于 2017-12-8 15:31 编辑
各位同学,大家好!欢迎关注我们杭州黑马PHP课程,接下来的一段时间我们将会有不同阶段的老师给同学们分享PHP课程的基础篇以及项目篇。这节课程主要是给大家分享项目篇。从项目的部署一直到项目的整理架构,流程,希望能给大家的编程学习带来帮助,当然在学习中遇到了问题也可以回帖进行提问,我们还会不定时的在公众平台派送一些意想不到的惊喜呦!!!
今天接着给大家分享项目的第四天--实现权限认证
一、实现权限认证①增加属性保存信息
②根据用户信息获取对应的角色信息
③根据角色ID获取对应的权限信息
④将权限的信息格式化一维数组进行保存
⑤对当前访问的方法进行判断是否有权
二、完善权限认证
2.1、设置后台首页具备访问权限
2.2、实现首页中导航菜单显示①将user属性中的权限信息赋值给模板
②模板中显示出具体的权限信息
2.3、权限认证调优
2.3.1、实现的思路在项目进行优化时问题最多就在MySQL上。在对MySQL进行数据查询优化时有一个原则“能够避免从MySQL中查询数据就劲量的避免”。此时即需要查询数据又需要避免MySQL查询。因此可以通过其他的存储介子保存用户的信息。常见的存储介子文件存储,内存存储等方式。此时使用文件的方式存储
具体实现的步骤:
[size=14.0000pt]1、当需要获取用户信息时。在从数据库获取信息之前。先到当前用户对应的文件中读取信息。如果读取到数据了直接使用,否则在到MySQL中读取信息然后在将信息写入到文件中,方便下次使用
[size=14.0000pt]2、当某个角色对应的权限信息发送变化。需要将当前角色下的所有用户的文件信息全部删除
2.3.2、代码实现①先从文件中获取用户对应的信息
②根据获取到的用户信息判断是否需要进行数据库获取
③当数据获取成功之后再次写入到文件中
④针对超级管理员不进行权限认证
⑤针对角色信息修改删除后用户的文件信息
⑦增加方法处理超级管理员缓存进行更新
三、商品类型管理
3.1、创建商品类型数据表CREATE TABLE jx_type(
id int(11) NOT NULL AUTO_INCREMENT,
type_name varchar(30) NOT NULL DEFAULT '' COMMENT '类型名称',
PRIMARY KEY(id)
)ENGINE= InnoDB DEFAULT CHARSET=utf8;
3.2、类型的添加功能①复制角色的控制器
②复制角色的模型
③复制角色的视图
④修改控制器的代码
⑤ 修改模型
⑥修改视图
3.3、类型的列表显示①修改控制器中index方法
②修改视图
3.4、实现类型的删除操作①修改控制器中的dels方法
3.5、编辑类型①修改控制器中的edit方法
②修改视图
四、属性管理
4.1、属性添加入库
4.1.1、创建属性数据表CREATE TABLE jx_attribute(
id int(11) NOT NULL AUTO_INCREMENT,
attr_name varchar(30) NOT NULL DEFAULT '' COMMENT '属性名称',
type_id int(11) NOT NULL DEFAULT 0 COMMENT '属性所对应的类型',
attr_type tinyint(1) NOT NULL DEFAULT 1 COMMENT '表示属性的类型 1表示唯一 2表示单选',
attr_input_type tinyint(1) NOT NULL DEFAULT 1 COMMENT '表示属性值的录入方法 1表示手工输入 2表示列表选择',
attr_value varchar(255) NOT NULL DEFAULT '' COMMENT '列表选择的默认值 多个值之间使用逗号隔开',
PRIMARY KEY(id)
)ENGINE= InnoDB DEFAULT CHARSET=utf8;
4.1.2、显示出属性的添加页面①创建控制器方法加载模板
②创建视图对应的目录
③创建添加模板
④控制默认值是否可以输入
4.1.3、属性的入库①创建生成模型的方法
②在控制器中接受表单数据入库
③创建模型
4.2、属性的列表显示①创建方法获取数据
②在模型中实现listData方法
③视图显示出具体的信息
④显示出类型名称
在listData获取到数据之后再对数据进行处理
4.3、属性的编辑①创建方法显示编辑的属性信息
②创建edit模板
再往下看,这里的selected写错了,自行改正:
③处理默认值
④接受数据入库
4.4、属性的删除操作①在控制器中实现删除数据
②在模型中实现具体的删除操作
五、商品与属性的的关联
5.1、添加商品时属性入库
5.1.1、实现商品添加的选项卡效果①增加选项卡标签
②增加对应的内容
③使用js控制点击切换
5.1.2、显示所有的类型①在控制器中获取所有的类型
②模板显示
5.1.3、根据类型切换显示出属性①修改HTML代码增加属性显示的标识
②触发ajax
③实现showattr方法获取数据
④模板显示
5.1.4、单选属性增加功能①针对单选属性增加特殊符号
②实现clonethis方法进行复制或者删除
5.1.5、属性信息入库①修改商品表结构增加类型的字段
②修改商品模型中的自定义字段
③创建商品属性表
CREATE TABLE jx_goods_attr(
id int(11) NOT NULL AUTO_INCREMENT,
goods_id int(11) NOT NULL DEFAULT 0 COMMENT '商品ID',
attr_id int(11) NOT NULL DEFAULT 0 COMMENT '属性ID',
attr_values varchar(255) NOT NULL DEFAULT '' COMMENT '属性值',
PRIMARY KEY(id)
)ENGINE= InnoDB DEFAULT CHARSET=utf8;
④设置属性的name值
⑤接受数据入库
5.2、修改商品时修改属性
5.2.1、显示原始的信息①获取所有的类型
②获取当前商品对应的属性信息
③模板修改
此处的操作 可以先复制一份 edit的备份模板,然后将edit的HTML代码换成add添加模板的代码。然后在将备份的edit模板中的第一个table替换掉edit模板中对应的table然后对table标签做修改即可。
5.2.2、属性修改入库①修改代码中的name属性
②实现数据入库修改
③创建模型
④修改添加商品时属性入库
[size=18.6667px]⑤修改编辑商品时属性入库修改
5.2.3、编辑时对属性显示进行完善①数据格式化
②模板显示数据
众览群雄,唯我杭城独秀—一贴汇总杭州校区所有就业薪资
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |