shop34-10-框架类

框架类(框架初始化类)

将原来入口文件中功能,放在该类中完成,入口文件变得简单,轻量!

将入口文件中的各个功能,由框架类的各个方法,完成:

为了简单化,使用纯静态的类。(看成功能的集合)

此时入口文件:

shop34-11-配置文件系统

配置文件

在application目录中,增加一个子目录config用于管理项目中所出现的配置文件:

设计,配置文件存储数据的格式:

对配置进行分组管理:

初始化项目时,载入该配置文件,获取配置信息

在框架类中,增加载入配置的操作:

在初始化完路径常量后,就可以完成对配置的初始化:

使用配置完成:

分发参数:

数据库服务器信息:

Model:

SessionDB:

shop34-12-防止SQL注入

项目中添加防止SQL注入的代码

在MySQLDB中,添加一个可以完成转义的方法,在模型中,需要时调用!

项目中使用,AdminModel中,完成转换:

为了避免,整型数据可能不被SQL中增加引号,强制在转换后的数据使用引号包裹;

拼凑SQL的数据不需要增加引号:

Tip:

PHP中魔术引号(magic quotes),PHP中自动为请求数据(GET,POST)增加转义的一种防止SQL注入机制。

shop34-13-DAO层抽取

项目中对PDO的使用

使用PDO,实现与mysqlDB这个DAO对象外部操作一致的另外一种DAO的实现,可以做到,模型切换DAO,是不需要更改模型内的任何代码(热插拔,无缝切换)

增加DAO的操作接口(I_DAO),使所有DAO的定义(mysql扩展,PDO扩展)都实现相同的DAO操作接口(I_DAO)

shop34-14-后台首页展示

后台首页功能

主体功能

框架集布局,各个框架中,都需要请求项目的某个功能动作,完成最终的展示!

Back/ManageController->indexAction()

完成后台模板index.html

各个frame功能

实现对应的视图模板:

shop34-15-平台控制器-集中验证

后台公共登录验证 – 平台控制器

后台不仅Manage->indexaction()需要登录验证,而且其他动作需要登录验证。

该操作属于当前平台后台的公共控制器功能。

增加后台的平台控制器,完成相应验证工作:

平台中其他的控制器,都继承自平台控制器:

将验证登录操作,移动到PlatformController:

实现:

调用时机:

实例化后台控制器对象的时候(构造方法执行时):

测试:

发现,已经可以验证未登录,并跳转到登录,但是登录页面没有正常加载:

Why?

请求admin的login时,也要判断是否登录,没有由跳转到admin的login,导致死循环。

可见:后台的绝大多数的动作都需要登录验证后在执行,但是存在特例:登录相关,找回密码之类。

应该判断是否登录时,如果是特例动作则不判断:

如何判断特例?

由于开启session在公共的位置,后台的动作中,就不需要再次开启session了:

adminController->checkAction()

php_mvc实现步骤八的更多相关文章

  1. php_mvc实现步骤九(登录验证码,退出-登录标记)

    shop34-17-登录验证码 验证码的分析 登录:防止暴力破解 论坛:防止灌水水 展示类:被抓取. 需要技术: 图片处理技术. 会话session技术. PHP图片处理技术 – GD 具体操作步骤 ...

  2. php_mvc实现步骤十

    shop34-19-商品添加 功能:添加商品表单 Index.php?p=back&c=Goods&a=add Controller-Action: 新建商品控制器类 Applicat ...

  3. php_mvc实现步骤七

    shop34-5-登录表单 登录功能分析 功能:登录表单 C控制器-动作 back后台admin控制器loginAction动作完成该功能. Application/back/controller/A ...

  4. php_mvc实现步骤六

    shop34-1-目录布局 存在项目的根目录 shop34 框架代码与应用程序代码划分 框架代码: 在各个应用程序间可以通用的代码. 应用程序代码: 当前项目的业务逻辑实现的代码. 分别创建两个子目录 ...

  5. php_mvc实现步骤五

    5.match_controller 控制器层典型实现 控制器类 依据功能的相关性,将一系列相关的功能,使用一个控制器类来处理,而该控制器的每个方法,就对因某个功能. 注意:控制器是按照功能划分的.( ...

  6. php_mvc实现步骤三,四

    3.match_mvc MVC 以ecshop的前台为例: 功能一: 首页 购物车数据,商品分类数据,其他的首页需要的数据 功能二: 拍卖活动 购物车数据,商品分类数据,拍卖相关数据 功能三: 团购商 ...

  7. php_MVC实现步骤二

    2.match_split 显示逻辑相分离 将功能强制分成两个部分,显示html文件,和逻辑PHP文件: 要求浏览器请求负责功能的PHP逻辑文件: 该PHP逻辑文件,对需要的显示内容进行载入. 逻辑P ...

  8. php_MVC实现步骤一

    1.Match 基本实现 功能,比赛列表,球队信息 数据表初始化: 比赛列表: 球队一 比分 球队二 比赛时间 韩国 1:2 澳大利亚 15-01-31 17:00 从SQL思考,如何完成上面的查询: ...

  9. 在AndroidStudio中引入SlidingMenu第三方库的步骤

    步骤一:        在GitHub上下载库文件     步骤二:         在需要引入库的项目中导入一个Moudle,如下图:     步骤三:         将下载后的Slidingme ...

随机推荐

  1. formData上传文件

    需要将选中的xml传到后台,通过xslt转换为html html: <form id="uploadForm" enctype="multipart/form-da ...

  2. 前端知识-控制div标签的显示与隐藏

    //将附件信息列表进行隐藏 var tAppendixDiv = document.getElementById("AppendixDiv"); tAppendixDiv.styl ...

  3. Vue --- 基础指令

    目录 表单指令 条件指令 循环指令 分隔符(了解) 过滤器 计算属性 监听属性 冒泡排序 表单指令 使用方法: v-model 数据双向绑定 v-model绑定的变量可以影响表单标签的值,反过来表单标 ...

  4. python 格式化输出%s %f %d

    格式说明由%和格式字符组成,如%f,它的作用是将数据按照指定的格式输出.格式说明是由“%”字符开始的. 1.整型输出%d print 'my age is %d'% (26) 说明:%d相当于是一个占 ...

  5. 【学习笔记】Kruskal 重构树

    1. 例题引入:BZOJ3551 用一道例题引入:BZOJ3551 题目大意:有 \(N\) 座山峰,每座山峰有他的高度 \(h_i\).有些山峰之间有双向道路相连,共 \(M\) 条路径,每条路径有 ...

  6. B/S结构与C/S结构测试区别

    B/S结构与C/S结构 B/S结构是浏览器/服务器结构,应用软件的业务逻辑完全在服务器端实现,客户端只需要通过浏览器完成浏览.查询.输入等简单操作. C/S结构是客户端/浏览器结构,客户端具有一定的数 ...

  7. H5页面中判断是安卓手机还是ios手机的方法;APP页面中嵌套的H5跳转到APP其他页面的方法。

    (一).在H5页面中,可以直接利用如下的方法来进行判断是安卓还是ios. var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linu ...

  8. python(三)——while语句

    while死循环 #!/usr/bin/env python #-*- coding:utf8 -*- import time while 1 == 1: print('Ok',time.time() ...

  9. vlang 试用

    vlang 是最近出来的一门编程语言,集成了rust,golang, 等语言的特性,轻量.简洁.编译 快速,详细的比价参数可以参考官方文档 安装 目前尽管官方提供了linux以及mac 的二进制文件, ...

  10. 解决configure: WARNING: You will need re2c 0.13.4 or later

    我在安装rabbitmq php扩展的时候发现 configure: WARNING: You will need re2c 0.13.4 or later if you want to regene ...