php_mvc实现步骤八
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实现步骤八的更多相关文章
- php_mvc实现步骤九(登录验证码,退出-登录标记)
shop34-17-登录验证码 验证码的分析 登录:防止暴力破解 论坛:防止灌水水 展示类:被抓取. 需要技术: 图片处理技术. 会话session技术. PHP图片处理技术 – GD 具体操作步骤 ...
- php_mvc实现步骤十
shop34-19-商品添加 功能:添加商品表单 Index.php?p=back&c=Goods&a=add Controller-Action: 新建商品控制器类 Applicat ...
- php_mvc实现步骤七
shop34-5-登录表单 登录功能分析 功能:登录表单 C控制器-动作 back后台admin控制器loginAction动作完成该功能. Application/back/controller/A ...
- php_mvc实现步骤六
shop34-1-目录布局 存在项目的根目录 shop34 框架代码与应用程序代码划分 框架代码: 在各个应用程序间可以通用的代码. 应用程序代码: 当前项目的业务逻辑实现的代码. 分别创建两个子目录 ...
- php_mvc实现步骤五
5.match_controller 控制器层典型实现 控制器类 依据功能的相关性,将一系列相关的功能,使用一个控制器类来处理,而该控制器的每个方法,就对因某个功能. 注意:控制器是按照功能划分的.( ...
- php_mvc实现步骤三,四
3.match_mvc MVC 以ecshop的前台为例: 功能一: 首页 购物车数据,商品分类数据,其他的首页需要的数据 功能二: 拍卖活动 购物车数据,商品分类数据,拍卖相关数据 功能三: 团购商 ...
- php_MVC实现步骤二
2.match_split 显示逻辑相分离 将功能强制分成两个部分,显示html文件,和逻辑PHP文件: 要求浏览器请求负责功能的PHP逻辑文件: 该PHP逻辑文件,对需要的显示内容进行载入. 逻辑P ...
- php_MVC实现步骤一
1.Match 基本实现 功能,比赛列表,球队信息 数据表初始化: 比赛列表: 球队一 比分 球队二 比赛时间 韩国 1:2 澳大利亚 15-01-31 17:00 从SQL思考,如何完成上面的查询: ...
- 在AndroidStudio中引入SlidingMenu第三方库的步骤
步骤一: 在GitHub上下载库文件 步骤二: 在需要引入库的项目中导入一个Moudle,如下图: 步骤三: 将下载后的Slidingme ...
随机推荐
- 长为N的数组,元素范围是0-N-1,其中只有一个数是重复的,找出这个重复元素
思路:如果限制空间复杂度为O(1),我们就无法采用哈希表的方法去求解.题目中数组中所以数字都在范围[0, N-1],因此哈希表的大小为N即可.因此我们实际要做的就是对N个范围为0到N-1的数进行哈希, ...
- [转]windows10下安装与激活rational rose 2003
Rational Rose2003安装+激活教程(Win10)(另附安装包+激活软件) 原文链接:https://blog.csdn.net/qq_38388811/article/details/8 ...
- windows认证过程
NTLM简介: NTLM使用在Windows NT和Windows 2000 Server(or later)工作组环境中(Kerberos用在域模式下).在AD域环境中,如果需要认证Windows ...
- 时间戳显示为多少分钟前,多少天前的JS处理,JS时间格式化,时间戳的转换
var dateDiff = function (timestamp) { // 补全为13位 var arrTimestamp = (timestamp + '').split(''); for ( ...
- jeecg uedit 自定义图片上传路径
jeecg uedit 图片上传配置自定义物理路径,简单描述:我们知道 jeecg 中使用的 uedit 默认图片上传路径为 "当前项目\plug-in\ueditor\jsp\upload ...
- jsp之大文件分段上传、断点续传
1,项目调研 因为需要研究下断点上传的问题.找了很久终于找到一个比较好的项目. 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面. http ...
- 括号匹配(POJ2955)题解
原题地址:http://poj.org/problem?id=2955 题目大意:给出一串括号,求其中的最大匹配数. 我这么一说题目大意估计很多人就蒙了,其实我看到最开始的时候也是很蒙的.这里就来解释 ...
- span 不使用float 靠右对齐且垂直居中
一般让div 里的span 靠右对齐用的方法比较多的是float:right. 这次由于各种原因我不想用float 先看效果: HTML 部分 <div class="customer ...
- Kubeadm证书过期时间调整
kubeadm 默认证书为一年,一年过期后,会导致api service不可用,使用过程中会出现:x509: certificate has expired or is not yet valid. ...
- beyond compare解决特殊字符无法输出、多sheet页无法对比以及文件太大超出系统内存问题的Excel转txt脚本
beyond compare解决特殊字符无法输出.多sheet页无法对比以及文件太大超出系统内存问题的Excel转txt脚本 ' XLS_to_CSV.vbs ' ' Converts an Exce ...