• 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
没有结果
查看所有结果

TP5 商城(一)环境部署、数据表、后台首页、用户 CURD、Ajax 状态切换、后台登录、后台退出、后台防翻墙、RBAC

Mr.Lee 由 Mr.Lee
2018年6月10日
在 TP5.0, TP5.0商城, 后台框架
0
TP5 商城(一)环境部署、数据表、后台首页、用户 CURD、Ajax 状态切换、后台登录、后台退出、后台防翻墙、RBAC
0
分享
0
浏览

商城实战第一天

电商介绍

电子商务模式介绍

现在的电子商务平台主要分为以下几种类型:

  • B2C :全称-Business to Consumer , 即企业与消费者之间的电子商务。

常见的有B2C网站有:天猫(商家入驻(实体店,保证金20W),需要营业许可证等资料)、京东(商家也可入驻)、当当网、唯品会、凡客、小米、华为、oppo等

  • C2C: 全称-Consumer to Consumer,即消费者与消费者之间的电子商务。

典型的C2C网站就是国内的淘宝(需要交保证金2000元左右),还有58同城,二手交易网站如:闲鱼二手交易网。

  • O2O: 全称-Online to Offline,线上与线下相结合的电子商务。

常见的有:苏宁、美团、国美、滴滴打车等。

  • B2B:全称-Business to Business 即企业与企业之间的电子商务。(阿里妈妈)

常见的开源商城

(1)Ecshop

ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。

网址:http://www.ecshop.com/

特点:开源、免费(个人学习使用没有任何问题)。但是企业使用用来盈利的话需要一定的授权费用(3000元左右)。

(2)shopex

网址:http://www.shopex.cn/

 

特点:商业版,代码是加密过的。

(3)shopnc

网址: http://www.shopnc.net/

演示地址: http://b2b2c.shopnctest.com/dema/shop/index.php

特点:不开源、不免费

小结:

开源不代表免费,可以自己学习研究使用,但是以盈利为目的使用需要交一定的授权费用。

安装Ecshop开源商城

现在的Ecshop主要有以下两个版本:

  • 3.0版本:需要php5.4版本以上
  • 2.7版本:需要在php5.3以下(如:phpstudy集成环境进行php降级),当然5.4、5、5版本也是可以的,只是需要修改部分代码。

这里建议安装Ecshop的兼容版本,已经兼容各个php版本。

域名部署访问 ecshop

一般把第三方开源项目部署在自己的机子上面域名前建议加个vendor,如:vendor.shop.com。明确知道这个程序是第三方程序。本地自己开发的项目话建议使用local进行开头,如:local.shop.com。

步骤1:把ecshop开源程序的所有的文件复制到我们的项目目录

步骤2:配置虚拟主机,如域名为上面的vendor.ecshop.com

  1. phpstudy设置虚拟主机
  2. 设置host文件映射
  3. 重启phpstudy

步骤3:输入域名进行安装配置

  1. 勾选

b、配置系统

c、配置数据库的信息

访问ecshop前台:http:/域名/

访问ecshop后台:http:/域名/admin/

部署tp5商城项目环境

部署虚拟主机

三步:

步骤1:把tp5项目程序复制指定虚拟目录

步骤2:使用phpstudy配置域名如为:www.php15shop.com,虚拟目录需要绑定到public目录下面

步骤3:设置hosts文件映射

最后访问如下,说明配置成功:

导入商城项目所有数据表

建议使用navicat可视化工具进行完成,找到对应的sql文件,进行导入。

要先创建一个数据库,如php15shop

 

每张表的字段信息可以参考数据库文档:

项目前的一些配置

我们可以先把数据库、控制器后缀、静态资源目录等一些基本配置先定义好。

  • 数据库配置

  • 控制器后缀

  • 配置静态资源路径,把后台静态资源放到相应的目录,配置后台密码加密验salt

  • 先设置默认模块为admin、开发前台时(项目上线)设置为home

  • 并且开启调试模式,页面trace调试,看到错误的详细信息

开启页面trace调试,页面右下角多处一个图标。

  • 开启模型获取数据返回关联数组的配置

  • 修改重写文件.htaccess隐藏单一入口文件访问

这里需要在httpd.conf开启rewrite重写模块,和在虚拟主机中把 AllowOverride None改为 AllowOverride All,这两步在安装phpstudy的时候和配置虚拟主机时其已经帮我们设置好了。

只需要改修改重写文件.htaccess,前面加个问号?

三、搭建后台首页

步骤1:在后台admin建立一个index控制器,分别建立top、main、left、index

步骤2:复制后台指定的模板到指定的目录,并且修改每个模板的静态资源路径

访问效果:

四、用户表的CURD操作

完成用户的添加功能

步骤1:在后台创建User控制器,并建立一个add方法输出模板内容

步骤2:修改add.html模板的name名称

步骤3:定义当前表的验证器

步骤4:在模型中定义前入库的钩子事件,完成密码字段的加密

步骤5:控制器完成验证入库操作

完成用户列表功能及分页

步骤1:在后台User控制器建立一个index方法,取出所有的用户数据,并分配到模板中

步骤2:模板遍历数据

效果:

完成用户的编辑功能

编辑用户的时候,密码选项需要考虑两种情况:

①如密码和确认密码都为空,说明用户不想修改密码,则保留原来的密码。

②如果两个密码有一个不为空,说明用户想修改密码,则必须要求用户两次密码一致。

代码如下:

步骤1:给编辑的设置一个链接地址,携带一个主键值

步骤2:使用jquery-validate对密码字段进行验证

规则如下:

注:要修改style.css文件样式,因为有样式冲突

设置upd.html模板内容回显数据:

步骤3:upd方法中完成编辑的验证编辑入库

同时修改编辑场景的验证器:

ajax控制用户的登录状态

步骤1:先给标签加一个a标签,并且阻止默认行为,同时加一个is_active和user_id属性,目的是获取当前记录的状态值和主键值,并且绑定类名为changeActive。

步骤2:给class=changeActive 绑定单击事件,发送ajax请求

步骤3:在User控制器建立一个ajaxChangeActive方法,完成状态的更改

注意:由于更改状态值的时候会触发编辑的前钩子,这时候没有携带密码字段前钩子会直接报错,解决办法:对前钩子有没有密码字段进行isset判断即可:

提示:调试ajax的时候,务必要打开控制器network进行调试。可以打开response选项看报啥错,这样可以快速定位到错误的原因。

五、完成后台用户登录|退出|防翻墙功能

完成后台登录功能

步骤1:在后台建立一个Public控制器,并建立一个login方法,输出登录模板同时,同时完成登录的功能实现

同时在User模型中,定义一个checkUser的方法,检测用户名和密码是否相等

步骤2:修改login.html模板内容,显示验证码

步骤3:在验证器中定义登录场景的验证规则

登录成功,在top.html中回显用户名

完成后台退出功能

步骤1:在后台Public控制器建立一个logout的退出方法

防用户翻墙

防翻墙思想:建立一个父控制器如:CommonController,在此控制器的构造函数中做session的判断,其他需要进行验证session的控制器就继承此公共控制器即可防止翻墙,某些控制器不需要session判断则不继承即可。(如:PublicController)

其中Index 和User控制器需要继承Common,public不需要继承

六、RBAC权限控制

RBAC介绍

RBAC: Role Based Access Controller ,即基于角色的访问权限控制。

简单的说,用户登录可以属于不同的角色,不同的角色拥有的后台访问菜单权限也不一样。

如:

如下面的每个菜单就是一个权限。

后台菜单中权限一般只控制到两级权限,权限级别太深难以维护,具体要看项目需求。

一级权限:如:商品管理。

二级权限:如:商品添加、商品列表。

三级权限:如:商品列表中的编辑或删除操作

RBAC表的表设计

一般RBAC权限控制都3张表和5张表,其核心都是一样。

3张表:后台用户表、角色表、权限表。

而5张表仅把用户表和角色表、角色表和权限表其相关联的字段分别使用一个表来维护。且表多了维护起来更加繁琐。

这里我们采用3张表来做权限控制。

三张表的关系如下:

分析:

  • 用户表通过角色字段role_id,找到与其关联的角色表role_id。
  • 角色表通过所拥有的所有权限字段auth_id_list,找到与其关联的权限表的auth_id。

控制权限图解:

可见,一个用户对应着一个角色,一个角色可以拥有多个权限。

七、RBAC功能实现

权限表的curd操作

(1)完成权限的添加

步骤1:在后台建立一个Auth控制器,并建立一个add方法,输出模板内容,并完成添加权限的实现

同时在Auth模型中取出权限的无限级分类数据:

步骤2:设置add.html模板内容

当选择顶级权限时,控制器名和方法名不可用,否则可用。因为顶级权限没有控制器名和方法名。

注意:表单input设置disabled和readonly的区别

相同点:都不可以编辑input中的数据

不同点:设置disabled时,php中通过$_POST接收不到input框name的属性值

设置readonly时,php中通过$_POST可以收到input的name的属性值

步骤3:定义Auth验证器,进行验证

模板效果:

完成权限的列表展示

完成权限的编辑

完成权限的删除

角色表的curd操作

添加角色及分配权限

注:一般系统角色名为超级管理员都会拥有所有的权限,其权限字段auth_id_list可以手动设置为*。

(2)角色的列表展示

把一个角色所拥有的权限都查出来,这里需要利用到两个mysql函数:

FIND_IN_SET和group_concat(字段)

  • FIND_IN_SET(str,strlist) :

作用:查询出子串str,是否在由逗号分隔的目标字符串strlist中存在。

如:判断5是否在字符串1,2,3,4,5中存在:FIND_IN_SET(5,‘1,2,3,4,5’) ,存在则返回所在目标字符串strlist的所在位置,不存在则返回0。

  • group_concat(字段)

作用:主要根据某个字段进行分组,把相同字段的值连接在一起。

默认连接符号是逗号 ,如果用|连接则:

group_concat(字段名 SEPARATOR “|”)

例:如下是表tp_article表中的一些数据

根据cat_id字段进行分组,把具有相同cat_id的title字段值连接在一起。

(3)完成角色编辑功能

(4)完成角色删除功能

实现不同用户登录展示不同后台菜单

八、权限防翻墙

标签: Ajax 状态切换RBAC后台登录后台退出后台防翻墙后台首页数据表环境部署用户 CURD
上一篇文章

TP5 商城(二)RBAC、权限增删改查、角色增删改查、不同用户显示不同后台、权限防翻墙

下一篇文章

TP5.0(四)添加文章、添加验证、图片上传、缩略图、图片预览、文章列表展示、分页、文章编辑、文章删除、XSS 攻击、Jquery-Validate 验证插件、钩子函数

下一篇文章
TP5.0(一)部署、控制器、模块、命令行、路由、视图、模板赋值、常用标签、搭建后台首页、搭建登录页、页面跳转与重定向、Request 对象

TP5.0(四)添加文章、添加验证、图片上传、缩略图、图片预览、文章列表展示、分页、文章编辑、文章删除、XSS 攻击、Jquery-Validate 验证插件、钩子函数

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Search

没有结果
查看所有结果

About Me

个人随笔

Winston Lee

Programmer

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Winston Lee

About Me

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Categories

  • AJAX
  • BootStrap
  • CodeIgniter
  • CSS
  • DedeCMS
  • GIT
  • HTML
  • Javascript
  • Jquery
  • Laravel
  • Laravel在线教育平台
  • Linux
  • Memcache
  • MongoDB
  • MVC
  • Mysql
  • Nginx
  • Node
  • PDO
  • PHP
  • PHP7
  • PHP基本语法
  • PHP核心编程
  • Redis
  • Smarty
  • Socket
  • SVN
  • Swoole
  • TP3.2
  • TP3.2商城
  • TP5.0
  • TP5.0商城
  • XML
  • Yaf
  • Yii
  • Yii手机直播
  • 二次开发
  • 优化方案
  • 前端技术
  • 前端框架
  • 后台框架
  • 基本操作
  • 微信公众号
  • 数据库
  • 未分类
  • 混合APP
  • 源码Blog项目
  • 版本控制
  • 环境搭建
  • 移动端开发
  • 网站优化
  • 资料
  • 面向对象
  • 面向对象编程
  • 页面静态化

Tags

DOM Json RBAC 事件 传参 函数 分页 判断语句 匿名函数 变量 图片上传 存储过程 安装 对象 封装 属性 接口 控制器 数据库操作 数据类型 数据表 数组 文件上传 无刷新分页 权限 标签 模型 正则 流程控制 目录结构 算法 类 索引 继承 缩略图 表关系 视图 路由 运算符 选择器 递归 配置 错误处理 页面静态化 验证码
  • 首页
  • 前端
  • 前端框架
  • PHP
  • 数据库
  • 优化
  • 后台框架与实战
  • 移动开发
  • 二次开发
  • Linux
  • 版本控制
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3

没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3