通常来讲咱们实现某一个产品要么是彻底新的开发(0-1的过程),咱们此次是使用TP框架进行新的开发(0-1的过程),总体有一个归纳。(可是须要注意的是,毕竟才8天左右的时间,有部分的功能可能就不是很完整)。在开发以前,咱们须要使用必定的电商的产品来进行基本概念的理清。那么咱们使用一下一个开源的产品(ECShop)。php
什么是ECShop?css
答:是一个b2c(企业对用户)的开源商品(最早是为摩托罗拉商品作的),以前是上海商派公司开发的(高春辉:高老)。如今这个产品已经被shopNC收购。这个产品目前基本再也不作版本更新。(小的维护)(雪藏),须要注意的是该产品目前兼容性有点小问题(不能在高版本的PHP上面运行。)html
集成开发环境:PHPstudymysql
几个概念?jquery
b2c:企业对客户(地方性的电商网站)laravel
c2c:客户对客户 淘宝(我的对我的)git
b2b:企业对企业 天猫(商家、租金、保证金)、京东(自营、第三方入驻)程序员
o2o::线上(商铺)和线下(仓库为主) 京东、惟品会、苏宁、国美github
........web
1. 创建虚拟主机,配置host文件
3. 浏览器访问安装(域名+install)
4. 安装过程当中数据库配置和管理员帐号配置
5. 前台效果
须要注意的是,该产品存在一个通用的使用步骤,掌握该步骤以后,不管是用该产品作什么类型的电商都是能够快速的上手。(手机、电脑、农产品、书本.....)
一、 创建一个商品类型
二、 为商品类型指定属性
三、 创建分类
四、 添加商品
2. 为商品类型添加属性
3. 产地属性内容填写
须要注意的是,属性是能够分类的,通常为惟一和单选属性。同时属性在填写的时候,也是可使用不一样的方式进行属性值的填写,通常为手工填写和列表选择。
4. 甜度属性内容填写
5.是否绿色属性内容填写
属性填写
8. 前台商品展现效果
总结:
问题:引入商品类型有啥好处?
答:主要是为了后期的商城的扩充方便。(一个ECShop能够实现不一样的商城)1. 电脑 2. 蜂蜜 3. 海鲜....
对于二次开发,有一个大体的认识,知道如何去作二次开发(体现是一个野的路子)沿着别人的逻辑去找(体现程序员的思惟)
功能需求:
1. 关闭注册时候没必要要的项目(后台去大体查看)
后台关闭用户注册时候的没必要要的信息
2. 用户进行注册
3. 在注册完成后,但愿可使用邮箱进行登陆
咱们须要查找$user在哪里进行实例化,在当前文件搜索没有发现,则只可能在当前文件的顶部开始在某个引入的文件里面进行实例化操做。
经过在init.php文件进行搜索,没有发现init_users()函数,那么只能从顶部开始在某个文件进行引入的
经过函数里面类文件的引入,咱们定义到$user对象的类文件在以下位置,可是在当前文件没有login方法,则在该类的父类里面确定存在login方法,那么查看该类的父类,而后进行处理
父类文件'includes/modules/integrates/integrate.php'
注意:在lib_common.php文件里面存在大量的公共函数,例如is_email()函数
如何追踪代码的执行的逻辑?二次开发不要改别人代码,只能加。
开发环境:
代码管理:SVN本地(公司如今使用的是SVN内部的代码管理、git开源产品的管理 github、laravel ---》composer进行管理)(国内oschina上面有一个叫码云的产品,中国版的GitHub)
数据库管理工具:少使用命令行、通常使用图形化的界面(phpmyadmin web版的管理工具不少、 navicat for mysql 很不错的 sql小海豚 front)尽可能作到每一个工具都有使用过,可是必定要有擅长的工具。
PHP集成环境:PHPstudy(wamp xamp 如今公司使用比较多的是 vagrant 进行环境搭建,能够保证开发环境严格的一种,引入一个叫作boxes的概念)PHP版本是5.4版本(PHP7了解: 1. PHP7里面参数是可使用基本数据类型进行约束 function getUserById(int $id) :array{})
开发工具:phpstorm(webstorm)称得上IDE(laravel) 、 netbeans、 zendstdio 、文本编辑器:sublime Text3版本(开发)、atom(GitHub开源产品)、vscode(微软)
若是使用SVN进行管理,必须是空目录
检出地址:http://192.168.84.28:8080/svn/local.tp.com/
用户名:php25
密码:php25
去除没必要要的目录
通常后台的首页都是一个品字形的框架集(头部、左侧、右侧)
模板:如今不少使用 h-ui admin框架 layUi
视图文件
4. 效果,虽然说如今框架集不建议使用(w3c不建议使用,可是在后台仍是继续使用)
如今咱们先实现后台的用户的管理,而后进行登陆操做。须要注意,后面咱们会学习rbac作用户的权限管理,到时候会有角色的概念。(大体:1. 有权限(控制器下的一个方法) 2. 创建角色(为角色分配权限) 3. 创建后台的用户(为用户分配角色))。先把用户的模块先完成,在实现rbac模块。
完成一个后台的用户管理,要先进行表的设计。
id 主键 smallint unsigned auto_increment primary key comment '主键ID'
username varchar(30) not null comment '用户名'
password char(32) not null comment '密码'
salt varchar(30) not null comment '盐'
email varchar(30) not null comment '用户邮箱'
add_time int unsigned comment '时间戳信息,下去查一个时间戳的2038问题'
login_ip int unsgined comment '对于点分式的IP字段,通常咱们在保存的时候都是先把IP转换为对应的整数进行保存,ip2long long2ip 好处:1. 查询快 2. 节省空间'
login_time int unsgined comment '登陆时间戳'
mark_up text comment '备注信息'
role_id tinyint not null default 0 comment '0表明尚未分配角色'
表结构
初始化操做
INSERT INTO `sh_user` VALUES ('1', 'caoyang', '26e1cd35f63895eee179cd5cb37af999', '597ee404d9ef3', 'gogery@163.com', '0', '0', '0', '备注信息', '1');
后台用户初始化
注意:通常来讲后台用户表设计完成后,都会初始化一条超级管理员的帐号(天生要存在,而且该用户也不能被删除,也不能被修改)
insert into sh_user values('..............');
整数数据范围
答:mediumint(无符号:0-1千六百万)通常咱们使用的比较多的是mediumint
int(无符号:0-42亿)
对于用户名或者是商品名称这类字段是否须要家里索引?
答:具体的业务具体看。
> select * from TableName where username like "%yang%";(全表扫描)
密码强度的处理
答:须要注意,因为单纯的md5容易被暴力破解(字典),通常咱们都使用双重md5处理(而后也能够叫作加盐)。规则:md5( md5('用户提交的密码') + 盐(随机字符串 uniqid()) );
完成一个用户的curd模块须要使用以下几个文件:
效果
效果
1.在Admin模块的UserController控制器文件增长一个edt方法,完成编辑操做
更新入库 save返回值是受影响的行数,有可能为0,
因此须要这样判断if( $userModel->save() !== false ){}
2.增长一个edt.html视图页面
效果
3.在Admin模块增长一个UserModel.class.php模型文件,主要负责数据的校验,以及数据的附加处理(用户编辑的时候能够密码留空)
更新钩子函数
1.在Admin模块的UserController控制器文件增长一个del方法
jquery的做者之一进行开发维护的。
1. 先将插件文件复制到静态资源的目录
3. 在add.html页面为要验证的表单定义一个id和验证提示的样式信息,而后使用js代码调用
代码调用