回顾PDO:PHP数据对象,作为了一个数据抽象层来负责向下连接各种指定的数据库。
1.加载PDO扩展2.创建PDO对象(连接数据库):new PDO($dsn,$user,$pass)3.组织SQL并发送a)PDO::exec:没有数据(结果集返回),返回受影响的行数b)PDOStatement PDO::query:有结果集,返回结果集对象4.处理返回结果a)结果集记录数:PDOStatement::rowCount,columnCountb)取出结果集:fetch(PDO::FETCH_BOTH,FETCH_ASSOC,FETCH_NUM),fetchAll,fetchColumn,fetchObject5.关闭PDO(unset(PDO对象))预处理1.发送预处理:PDOStatement PDO::prepare2.准备执行数据a)传入一个参数数据:PDOStatement::execute($array)b)在执行前绑定变量:bindParam,bindValue,使用PDOStatement::executePDO事务处理PDO::beginTransaction:开启事务PDO::commit:确认提交PDO::rollback:回滚PDO异常处理1.设置错误处理模式为异常模式:PDO::setAttribute(PDO::ATTR_ERRORMODE,PDO::ERRMODE_EXCEPTION)2.指定异常语句库去捕捉异常try{//可能出现错误的语句}catch(PDOException $e){//抓取错误并处理$e->getTrace()}反射:Reflection将一个类的内部的结构给反映出来:ReflectionClass获取常量:getConstants获取属性:getProperties获取方法:getMethodsECSHOPEcshop是一个电子购物商城,功能非常完善。
安装Ecshop1.获得Ecshop,得到解压后的数据2.将有效的文件复制一份,放到可执行的站点下放到网站目录下重命名3.傻瓜式安装:请求ecshop目录下的index.php文件即可4.勾选协议选项错误a)开启GD库。
php.ini中6.配置系统:数据库+管理员7.安装完成8.需要修改ecshop的配置项a)后台的init.php。
/admin/includes/init.php 修改错误显示选项修改错误显示级别(前台)ECSHOP结构1.网站根目录:ecshop,使用/代表根目录2.根目录下有很多请求文件,比如index.phpa)index.php:会先加载/includes/init.php,加载初始化文件,includes文件夹是存放公共文件的地方(包含类文件)b)ecshop中类文件的命名规则:没有使用类.class.php命名规范3.后台:/admin表示后台4.后台的结构与前台基本相似a)index.php:会加载/admin/includes/init.php,加载后台初始化文件b)所有的能够被请求到的PHP文件第一件事情都是加载init.phpc)templates文件夹:存放所有的静态页(模板文件),负责所有的显示样式结构d)处理模式:加载模板文件,往里面插入数据,显示给用户项目设计给定一个项目需求,让项目经理(总监)制作一个项目方案,如何实现当前需求。
需求:做一个安全(不用别人的东西)的电子商务网站(服装,面向中老年),用户访问量比较大项目架构1.确定采用什么语言做?JAVA,jsp,php,asp…------→确定使用PHP开发2.确定项目架构?源码开发,框架开发,二次开发…→使用源码开发3.文件结构?扁平化,树状----------------------------------→树状结构4.文件如何存放?------------------------------------------------→按功能分类存放代码架构5.文件如何命名?------------------------------------------------→类:类名.class.php6.PHP文件如何进行编写?过程,对象-------------------→混合(过程+对象)数据架构7.数据库选择?关系型,非关系型---------------------------→关系型数据库8.数据库选择?Mysql,Oracle,DB2…----------------------→mysql数据库9.存储引擎?主查询,主操作,事务处理----------------→InnoDB默认的shop项目仿照ecshop进行开发(使用ecshop的模板文件)项目架构1.PHP语言开发2.使用源码开发3.项目目录结构(树状,模拟ecshop)4.代码开发方式:对象+过程混合5.Mysql数据库+InnoDB引擎shop项目要实现的功能:只做后台功能列表权限类:登录,验证码,退出首页:框架商品分类:增删改查,无限级分类商品类:增删改查,回收站思想,图片处理(缩略图,水印,文件上传)搭建shop项目环境1.找到shop项目的根目录2.增加后台目录/admin3.完善前台目录/4.完善后台目录。
/admin5.搭建虚拟主机,访问shop项目:6.访问后台:/admin/index.php源码开发后台必须先经过用户登录之后,才能够访问首页。
要先实现用户登录功能。
仿照ecshop,所有权限相关的文件都访问权限文件(privilege.php)1.后台增加一个privilege.php文件:/admin/privilege.php2.实现请求privilege.php能够进入系统登录界面。
/admin/privilege.phpa)将登录页面的模板文件放到/admin/templates下面b)privilege.php包含login.htmlc)“偷”ecshop的样式文件和图片和js文件d)修改模板文件中对样式和图片的请求路径。
/admin/templates/login.html后台公共文件/admin/includes/init.php公共文件:用于所有被请求的php文件最先加载的文件,用于系统的初始化。
比如:显示编码,定义目录常量。
1.创建init.php。
/admin/includes/init.php2.显示字符集设置3.定义网站目录结构常量。
/admin/includes/init.php4.使用目录常量:/admin/privilege.php5.增加系统错误处理。
/admin/includes/init.php提交用户信息1.修改login.html的form表单的提交对象。
/admin/templates/login.html2.表单增加隐藏数据:提示privilege.php当前请求到底是要请求谁。
3.接收数据,判断用户当前请求到底是什么动作。
/admin/privilege.phpa)接收用户动作b)判断用户动作,做不同的处理4.接收用户登录信息,进行验证a)接收用户信息b)数据合法性验证5.鉴于每个功能都有可能出现跳转,所以要封装一个跳转函数。
/admin/includes/functions.phpa)增加一个跳转函数b)让公共函数回归init.php。
/admin/includes/init.phpc)在需要使用跳转的地方调用admin_redirect函数。
/admin/privilege.phpd)在要跳转模板文件中,显示对应的数据信息。
/admin/templates/redirect.html6.数据有效性验证a)搭建项目数据库环境。
/admin/sql.sqlb)插入一个用户c)加载DB类,将以前写好的DB类加载项目。
/includes/DB.class.phpd)修改DB类,如前缀,数据库名字e)创建一个Admin.class.php,表对应的类。
/admin/includes/Admin.class.phpf)在privilege.php中创建Admin对象,开始调用Admin类的方法。
/admin/privilege.phpg)需要加载类Admin,使用自动加载。
/admin/includes/functions.phph)调用Admin类的验证用户信息的方法:checkByUsernameAndPassword()。
/admin/privilege.phpi)实现当前调用的方法。
/admin/includes/Admin.class.phpj)判断用户验证是否成功。
/admin/privilege.php7.防止SQL注入。
在使用mysql_query方法之前对SQL语句进行转义处理。
/includes/DB.class.php配置文件对系统中某些默认的数据进行管理的文件,如数据库连接信息配置文件往往单独存在于一个文件夹1.创建配置文件文件夹。
/conf2.增加一个配置文件:/conf/config.php3.在公共文件init.php中加载配置文件。
/admin/includes/init.php4.在DB类中使用默认的配置信息。
/includes/DB.class.php整个项目的访问流程1.请求privilege.php,默认act=login2.加载login.html3.用户填写用户信息,提交给privilege.php,act=signin4.接收用户信息5.判断信息的合法性6.判断信息的有效性a)使用Admin表类b)继承自DB类c)自动加载7.跳转:admin_redirect。