A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小江哥 于 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的备份模板,然后将editHTML代码换成add添加模板的代码。然后在将备份的edit模板中的第一个table替换掉edit模板中对应的table然后对table标签做修改即可。
5.2.2、属性修改入库
①修改代码中的name属性

②实现数据入库修改

③创建模型

④修改添加商品时属性入库

[size=18.6667px]⑤修改编辑商品时属性入库修改

5.2.3、编辑时对属性显示进行完善
①数据格式化

②模板显示数据



众览群雄,唯我杭城独秀—一贴汇总杭州校区所有就业薪资


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马