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