tp电商项目1

1、电商项目

通常来讲咱们实现某一个产品要么是彻底新的开发(0-1的过程),咱们此次是使用TP框架进行新的开发(0-1的过程),总体有一个归纳。(可是须要注意的是,毕竟才8天左右的时间,有部分的功能可能就不是很完整)。在开发以前,咱们须要使用必定的电商的产品来进行基本概念的理清。那么咱们使用一下一个开源的产品(ECShop)。php

 

ECShop简介

什么是ECShopcss

答:是一个b2c(企业对用户)的开源商品(最早是为摩托罗拉商品作的),以前是上海商派公司开发的(高春辉:高老)。如今这个产品已经被shopNC收购。这个产品目前基本再也不作版本更新。(小的维护)(雪藏),须要注意的是该产品目前兼容性有点小问题(不能在高版本的PHP上面运行。)html

 

 

集成开发环境:PHPstudymysql

 

 

 

 

几个概念?jquery

b2c:企业对客户(地方性的电商网站)laravel

c2c:客户对客户 淘宝(我的对我的)git

b2b:企业对企业 天猫(商家、租金、保证金)、京东(自营、第三方入驻)程序员

o2o::线上(商铺)和线下(仓库为主) 京东、惟品会、苏宁、国美github

........web

 

安装和使用

1. 创建虚拟主机,配置host文件

 

 

 

  1. 下载和解压(虚拟主机目录)

 

 

 

3. 浏览器访问安装(域名+install

 

 

 

4. 安装过程当中数据库配置和管理员帐号配置

 

 

 

5. 前台效果

 

 

通用的使用步骤

须要注意的是,该产品存在一个通用的使用步骤,掌握该步骤以后,不管是用该产品作什么类型的电商都是能够快速的上手。(手机、电脑、农产品、书本.....

 

通用使用步骤简介

一、 创建一个商品类型

  1. 什么是商品类型?
  2. 答:商品类型指的就是这个商品是出售什么类型的产品,例如买手机、就叫作手机商城....

 

二、 为商品类型指定属性

  1. 什么是属性?
  2. 答:指的就是商品的特征(共同特征和特殊特征)
  3. 对于不一样的商品类型,不一样产品之间是存在不一样点的,例如手机产地、容量、制式..... 例如农产品甜度、绿色.....
  4. 注意:当咱们创建某个商品类型以后,须要为该商品类型指定相应的属性(根据一类事物进行高度的抽取,例如手机商城:a. 品牌 b.产地 c.制式 d.容量....

 

三、 创建分类

  1. 为何要创建分类?
  2. 答:主要是为了更好的管理商品。(例如:Apple手机 5G栏目)
  3. 特色:通常来讲咱们作的分类都是无限极的分类,可是须要注意的是,通常来讲无限极作到四级左右就能够了,不要作的过深。(SEO url目录结构最好不要超过是3级)不少公司考虑到无限极分类其实不会真的是无限极分类,可使用配置文件进行配置。

 

四、 添加商品

  1. 添加出售的商品的时候,不一样的商品类型下,属性是不同的,咱们须要根据不一样的商品类型,而单独生成对应的属性填写框。

 

实操商品管理

  1. 创建商品类型

 

 

 

2. 为商品类型添加属性

 

 

 

3. 产地属性内容填写

 

 

须要注意的是,属性是能够分类的,通常为惟一和单选属性。同时属性在填写的时候,也是可使用不一样的方式进行属性值的填写,通常为手工填写和列表选择。

 

 

4. 甜度属性内容填写

 

 

 

5.是否绿色属性内容填写

 

 

 

  1. 商品分类信息填写

 

 

 

  1. 在指定栏目下,添加商品;选择商品类型,为对应的商品添加属性

 

 

属性填写

 

 

 

8. 前台商品展现效果

 

 

 

 

 

总结:

  1. 商品类型,一个网站是卖啥,就是啥商品类型,名称能够本身定义
  2. 咱们须要为商品类型添加对应的属性,到时候会在商品添加的时候,根据用户选择的商品类型而生成对应的属性填写框。属性是能够分类的,通常来讲是能够分类惟一(在购买页的底部进行显示,用户是不能够选择的,只能看)和单选属性(在购买页的右侧进行展现,通常是能够选择的)。同时属性的属性值的填写也是能够进行分类处理,通常来讲是能够分为手工填写(input框)和列表选择(select框)
  3. 通常来讲咱们会在后台创建分类(主要是为了更好的管理商品)
  4. 添加商品(1. 选择分类 2. 选择商品类型,生成对应的属性填写框,不一样的商品类型的属性填写框是不同的)

 

问题:引入商品类型有啥好处?

答:主要是为了后期的商城的扩充方便。(一个ECShop能够实现不一样的商城)1. 电脑 2. 蜂蜜 3. 海鲜....

 

二次开发-邮箱登陆

对于二次开发,有一个大体的认识,知道如何去作二次开发(体现是一个野的路子)沿着别人的逻辑去找(体现程序员的思惟)

 

功能需求:

 

 

 

1. 关闭注册时候没必要要的项目(后台去大体查看)

 

 

后台关闭用户注册时候的没必要要的信息

 

 

 

2. 用户进行注册

 

 

 

3. 在注册完成后,但愿可使用邮箱进行登陆

 

 

 

 

  1. 查看登陆表单的提交actionuser.php,查看user.php里面对登陆的处理

 

咱们须要查找$user在哪里进行实例化,在当前文件搜索没有发现,则只可能在当前文件的顶部开始在某个引入的文件里面进行实例化操做。

 

 

 

 

  1. user.php文件的顶部引入的init.php文件里面进行搜索,发生$userinit_users()函数进行返回的

 

 

经过在init.php文件进行搜索,没有发现init_users()函数,那么只能从顶部开始在某个文件进行引入的

 

 

 

 

  1. lib_common.php文件发现init_users()函数引入

 

 

经过函数里面类文件的引入,咱们定义到$user对象的类文件在以下位置,可是在当前文件没有login方法,则在该类的父类里面确定存在login方法,那么查看该类的父类,而后进行处理

 

 

父类文件'includes/modules/integrates/integrate.php'

 

 

 

注意:在lib_common.php文件里面存在大量的公共函数,例如is_email()函数

 

 


如何追踪代码的执行的逻辑?二次开发不要改别人代码,只能加。

 

2、环境搭建

开发环境:

 

代码管理:SVN本地(公司如今使用的是SVN内部的代码管理、git开源产品的管理 githublaravel ---composer进行管理)(国内oschina上面有一个叫码云的产品,中国版的GitHub

 

数据库管理工具:少使用命令行、通常使用图形化的界面(phpmyadmin web版的管理工具不少、 navicat for mysql 很不错的 sql小海豚 front)尽可能作到每一个工具都有使用过,可是必定要有擅长的工具。

 

PHP集成环境:PHPstudywamp  xamp 如今公司使用比较多的是 vagrant 进行环境搭建,能够保证开发环境严格的一种,引入一个叫作boxes的概念)PHP版本是5.4版本(PHP7了解: 1. PHP7里面参数是可使用基本数据类型进行约束 function getUserById(int $id) :array{}

 

开发工具:phpstormwebstorm)称得上IDElaravel  netbeanszendstdio 、文本编辑器:sublime Text3版本(开发)、atomGitHub开源产品)、vscode(微软)

 

SVN管理代码

  1. 创建一个虚拟主机(local.tp.com

 

 

若是使用SVN进行管理,必须是空目录

 

 

 

  1. 代码初始化(通常来讲是经理完成)

检出地址:http://192.168.84.28:8080/svn/local.tp.com/

用户名:php25

密码:php25

 

 

 

  1. 下载一个thinkPHP3.2.2版本作开发(初始化提交到SVN仓库)

 

 

 

  1. 浏览器进行访问(生成基础性模块Home模块)

 

 

去除没必要要的目录

 

 

 

  1. 配置项目的静态资源目录和文件上传目录

 

 

 

  1. 创建本次开发的数据库

 

 

 

 

 

  1. 配置项目数据库信息(参考TP提供的convertion惯例配置文件)

 

 

 

后台首页搭建

通常后台的首页都是一个品字形的框架集(头部、左侧、右侧)

模板:如今不少使用 h-ui admin框架 layUi

 

 

  1. Admin模块创建一个IndexController控制器文件,增长四个方法

 

 

 

  1. 复制对应的静态资源到项目目录和创建对应的视图文件

 

 

视图文件

 

 

 

  1. 替换静态资源目录对应的cssjs以及img对应的路径

 

 

 

4. 效果,虽然说如今框架集不建议使用(w3c不建议使用,可是在后台仍是继续使用)

 

 

 

 

 

3、后台的用户管理

如今咱们先实现后台的用户的管理,而后进行登陆操做。须要注意,后面咱们会学习rbac作用户的权限管理,到时候会有角色的概念。(大体:1. 有权限(控制器下的一个方法) 2. 创建角色(为角色分配权限) 3. 创建后台的用户(为用户分配角色))。先把用户的模块先完成,在实现rbac模块。

 

表设计sh_user

完成一个后台的用户管理,要先进行表的设计。

 

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亿)

 

对于用户名或者是商品名称这类字段是否须要家里索引?

答:具体的业务具体看。

  1. 若是咱们的业务须要作模糊的匹配(yangiPhone

> select * from TableName where username like "%yang%";(全表扫描)

 

  1. 若是咱们的业务是作精准匹配偏多(曹阳),索引就有意义(若是用户名或者是商品名称必需要惟一,适合创建惟一索引)

 

密码强度的处理

答:须要注意,因为单纯的md5容易被暴力破解(字典),通常咱们都使用双重md5处理(而后也能够叫作加盐)。规则:md5( md5('用户提交的密码') + (随机字符串 uniqid()) );

 

用户的curd操做(增删改查)

完成一个用户的curd模块须要使用以下几个文件:

  1. 控制器文件(curd):UserController.class.php(命名规则:通常来讲是去除表前缀以后使用大驼峰的方式进行命名 UserController(类后缀) .class.php sh_goods_infoGoodsInfoController.class.php

 

  1. 模型文件(验证)若是是模型文件命名,必须和去除表前缀的名称一致 UserModel.class.phpsh_user

 

  1. 三个视图文件(add.html lst.html edt.html)(注意a.TP里面的视图文件的后缀.html  b. 通常来讲咱们TP里面可使用标签语法,也可使用原生PHP代码 不少开源产品基本都是使用的原生PHP代码 )

 

用户增长

  1. Admin模块增长一个UserController.class.php控制器文件,增长一个add方法

 

 

 

  1. 增长一个add.html视图文件

 

 

效果

 

 

  1. Admin模块增长一个UserModel.class.php模型文件,主要负责数据的校验,以及数据的附加处理(例如,密码的加密操做,到时候会使用模型里面的钩子函数进行处理)

 

 

 

 

 

用户展现

  1. Admin模块的UserController控制器文件增长一个lst方法(不要使用list关键字),获取全部数据

 

 

 

  1. 增长一个lst.html视图文件

 

 

效果

 

 

用户编辑

1.Admin模块的UserController控制器文件增长一个edt方法,完成编辑操做

更新入库 save返回值是受影响的行数,有可能为0

因此须要这样判断if( $userModel->save() !== false ){}

 

 

 

 

2.增长一个edt.html视图页面

 

 

效果

 

 

 

3.Admin模块增长一个UserModel.class.php模型文件,主要负责数据的校验,以及数据的附加处理(用户编辑的时候能够密码留空)

 

 

更新钩子函数

 

 

 

用户删除

1.Admin模块的UserController控制器文件增长一个del方法

 

 

 

 

 

 

 

 

4、插件-validate

简介

jquery的做者之一进行开发维护的。

 

 

 

下载和使用

1. 先将插件文件复制到静态资源的目录

 

 

 

  1. 在用户添加的add.html视图页面进行先引入

 

 

 

3. add.html页面为要验证的表单定义一个id和验证提示的样式信息,而后使用js代码调用

 

 

代码调用

 

 

 

  1. 效果

 

相关文章
相关标签/搜索