重蔚自留地PHP学习第46天——二次开发ECShop。

上一篇文章学了通过pdo来连接数据https://www.cwhello.com/263880.html

下面些总结。

PDO

    PDO:连接数据库,发送SQL

        exec:发送SQL语句,针对增删改,没有结果集返回

        query:发送SQL语句,针对查询,有结果集返回

        prepare:发送SQL语句,得到一个预处理

        query和prepare方法执行结束后,返回一个PDOStatement对象

    PDOStatement:处理mysql服务器返回的数据

        fetch:从结果集中返回一行记录,第一个参数用来指定返回的模式(要使用常量)

        rowCount,columnCount:结果集中的行的数量和列的数量

        execute:执行预处理

        bindParam,bindValue:将预处理中的变量进行值绑定

        bindColumn:将结果集中取得的一条记录中的某个字段绑定到具体的变量中

    PDOException:异常处理,必须保证错误模式为异常模式

 

实例化对象的过程

重蔚自留地PHP学习第46天——二次开发ECShop。

今天新学的知识是二次开发ecshop。

安装Ecshop

  1. 下载Ecshop

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 解压

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 将upload文件夹放到项目目录下,然后重命名为ecshop

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 傻瓜式安装,连接访问到ecshop的根目录下的index.php或者进入install目录访问index.php,进入安装界面

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 同意协议

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 环境支持

开启GD库,php.ini中有一个gd库的扩展

重蔚自留地PHP学习第46天——二次开发ECShop。

重启Apache

刷新环境监测界面

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 配置系统:数据库信息和用户信息

数据库账号

重蔚自留地PHP学习第46天——二次开发ECShop。

管理员账号

重蔚自留地PHP学习第46天——二次开发ECShop。

勾选安装测试数据

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 安装执行

登录后台

  1. 要对错误进行处理:主要是一些严格的错误,是因为当前PHP的版本与ecshop开发时所应用的PHP版本不一致造成
  2. 修改后台的错误文件:init.php初始化文件

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 修改前台的错误文件:init.php初始化文件

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 清理缓存:ecshop为了提高响应效率会做一些缓存,在修改了之后需要删除之前访问所遗留的缓存和编译文件。

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 进入系统后台

重蔚自留地PHP学习第46天——二次开发ECShop。

 

SHOP项目

模拟ecshop的结构和业务逻辑实现一些系统功能

项目分前台和后台,前台是给用户查看数据的功能,后台是管理员用来管理数据的功能。

后台功能

    权限验证:登录,表单,会话技术(session,cookie),验证码等

    商品分类:无限级分类

    商品管理:文件上传,图片的处理(缩略图,水印),回收站思想

前台功能

    注册登录

    购物车,订单

 

如何做项目?

项目设计

    架构设计

  1. 使用什么语言进行开发?PHP?asp?JAVA?
  2. 开发模式:源码,框架开发,二次开发
    1. 源码:全部代码自己敲
    2. 框架开发:TP,YII,CI
    3. 二次开发:在别人开发好的基础上,做修改

当前在国内比较流行的开发模式:框架开发和二次开发,原因是效率;一般对安全性要求高的项目,基本都是使用源码开发

    代码设计

  1. 目录结构设计
  2. 代码设计:
    1. 面向过程PK面向对象
    2. 功能如何划分
    3. 代码规范

 

shop项目采用PHP源码开发,采用MVC架构设计,仿照Ecshop的文件结构,采用面向过程和面向对象混搭模式

数据库设计

    数据库选择

  1. 什么类型数据库?关系型or非关系型?
  2. 服务器选择
  3. 存储引擎的选择
  4. 数据库结构

 

shop项目采用mysql数据库,采用默认存储引擎InnoDB,每一类(实体)数据对应一张表

 

Ecshop目录结构

前台部分

重蔚自留地PHP学习第46天——二次开发ECShop。

 

后台部分

重蔚自留地PHP学习第46天——二次开发ECShop。

 

shop目录结构

  1. 项目根目录

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 对应项目目录
    1. 前台目录

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 后台目录

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 配置虚拟主机,访问shop目录

重蔚自留地PHP学习第46天——二次开发ECShop。

重启Apache

修改hosts文件

重蔚自留地PHP学习第46天——二次开发ECShop。

 

访问

重蔚自留地PHP学习第46天——二次开发ECShop。

 

后台权限验证

所有跟权限相关的请求,都请求同一个文件:privilege.php

重蔚自留地PHP学习第46天——二次开发ECShop。

 

权限相关:登录,退出,验证码

 

登录功能

  1. 加载登陆界面
    1. 将login.php模板文件放到/admin/templates目录下
    2. 在/admin/privilege.php里面加载login.php文件

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 从Ecshop里面把后台对应的js,styles和images全部拿过来放到/admin目录下

重蔚自留地PHP学习第46天——二次开发ECShop。

  1. 修改login.php模板里面的img标签,找到对应的图片login.gif =è login.png

重蔚自留地PHP学习第46天——二次开发ECShop。

 

如何进行用户登录?

要保证有一个可以用的账号。第一个用户往往是通过在数据库后台进行数据插入得到(原因是因为大部分后台没有注册的功能)。

 

搭建项目数据库

数据库名字:shop

后台用户表:sh_admin

重蔚自留地PHP学习第46天——二次开发ECShop。

 

后台公共代码

新建一个init.php文件,用来保存后台的公共代码,文件放到/admin/includes/

重蔚自留地PHP学习第46天——二次开发ECShop。

 

在需要被访问(用户)的脚本内加载项目初始化文件/admin/privilege.php

 

 

登录功能

区分用户的请求,到底是请求登录界面还是请求验证用户信息?

通过给用户的请求设定一个标志,用act(action)来表示,如果用户没有请求动作,那么默认指定一个动作给用户。

重蔚自留地PHP学习第46天——二次开发ECShop。

 

对动作进行判断,然后根据不同的动作进行不同的操作

重蔚自留地PHP学习第46天——二次开发ECShop。

 

有很多地方会要用到跳转,使用html跳转,做一个跳转界面(模板),放到/admin/templates/admin_redirect.html

重蔚自留地PHP学习第46天——二次开发ECShop。

 

在需要跳转的时候将跳转模板加载

重蔚自留地PHP学习第46天——二次开发ECShop。

 

但是每次需要跳转的时候都需要写这么三个参数非常麻烦,所以把跳转封装一个函数。/admin/includes/functions.php

重蔚自留地PHP学习第46天——二次开发ECShop。

 

将公共函数加载到init.php文件/admin/includes/init.php

重蔚自留地PHP学习第46天——二次开发ECShop。

 

在后台需要跳转的地方直接使用admin_redirect函数

重蔚自留地PHP学习第46天——二次开发ECShop。

 

没一张表对应每一类数据的操作,针对没一张表抽象出一个类,表名跟类名一样,类名不需要表前缀。每一个类,凡是要操作数据库的都继承DB类。

 

因为前台和后台都需要操作数据,类都放到前台的includes下面/includes

重蔚自留地PHP学习第46天——二次开发ECShop。

 

再在该目录下创建一个Admin.class.php文件

重蔚自留地PHP学习第46天——二次开发ECShop。

注意:因为Admin类继承自DB类,所以也继承了对应的方法,不再需要构造方法去实例化DB类的对象。

 

使用Admin类的验证用户名和密码的功能/admin/privilege.php

重蔚自留地PHP学习第46天——二次开发ECShop。

 

去Admin类里补充checkByUsernameAndPassword方法

重蔚自留地PHP学习第46天——二次开发ECShop。

 

增加自动加载方法,/admin/includes/functions.php

重蔚自留地PHP学习第46天——二次开发ECShop。

 

判断登录结果:/admin/privilege.php

重蔚自留地PHP学习第46天——二次开发ECShop。

 

制作系统配置文件,配置数据库信息/config/config.php

重蔚自留地PHP学习第46天——二次开发ECShop。

 

在init.php中加载配置文件/admin/includes/init.php

重蔚自留地PHP学习第46天——二次开发ECShop。

 

修改DB类/includes/DB.class.php

重蔚自留地PHP学习第46天——二次开发ECShop。

 

用户访问privilege.php的执行流程图,见画图

本文来自投稿,不代表科技代码立场,如若转载,请注明出处https://www.cwhello.com/263931.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
上一篇 2023年5月22日 05:07
下一篇 2023年5月22日 05:26

相关推荐

  • PHP图像压缩处理技术教程

    一、图像压缩介绍 我们之前学习过文件的上传(上传一个头像),但是上传的文件不能直接使用的,因为本地的文件可能会很大,在前端页面显示的时候,就会加载很长时间,所以我们通常会先压缩再使用 通常压缩的时候...

    2018年9月11日 PHP案例操作
    0227
  • php自学教程—php运算符的错误抑制符

    错误抑制符 说明:@,目的屏蔽一些不重要错误。 作用:所有的网站不可能没有bug的时候上线。 执行运算符 说明:``,把数据用反引号括起来后,就是执行了。 递增递减运算符 说明:自己加一或自己减一,符号:++ --...

    2017年12月6日 PHP自学教程
    0232
  • php跳出语句-continue

    说明:跳过某次循环 案例:输出1-50,然后在第25次时跳过。 //输出1-50,然后再第25次的时候跳过。 for($i=1;$i<=50;$i++){ if($i==25){ continue; } echo $i .' '; }

    2018年3月8日
    0284
  • php数组随机位置中插入新元素(附代码)

    以下是php数组随机位置中插入新元素的代码 代码如下: //数组随机位置中插入元素 function inarr($arr,$str=''){ $key=array_rand($arr);//随机数组下标,插入位置 $arr2=array(); foreach($arr as $k=>$value)...

    2018年3月13日
    0446
  • 重蔚自留地php学习第三十五天——mysql基础1

    文件操作:目录操作,文件操作 目录操作步骤: 准备一个目录(路径) 判断一个路径是否是一个目录 打开目录opendir,返回一个目录资源,包含当前目录下所有的文件 遍历目录资源,循环+readdir,每次获得一个文件...

    2018年3月26日 PHP自学教程
    0288
  • 循环结构---DO...WHILE循环

    语法: 变量的初始化; Do{ 达成条件运行的代码; 变量的变化; }while(条件表达式) 注意:dowhile循环不管条件是否达成,都会运行一次循环中的代码; 案例:输出1-100 图解: 案例:99乘法表

    2018年1月9日
    0405
  • GOTO语句

    goto语句就是在页面中的不同位置进行跳转. 语法:  Goto 表示名;                        可以写代码;              表示名: 案例:

    2018年4月1日
    0210
  • PHP 新手入门之数据类型

    标量数据类型:是数据结构中最基本单元,只能储存一个数据 布尔型:boolean 字符串型:string 浮点型: float 整型 : integer 两种复合类型: array() 数组 object 对象 俩种特殊类型 resource 资源型 null 空 ...

    2018年12月16日
    0267

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息