TP中的模型(三)
1.1、AR模式
AR模式ActiveRecords模式的ORM模型,采用了非标准的ORM模型。模型对应数据表,对象对应数据行,属性对应数据字段。AR模式是采用面向对象思想(OOP)。对于此方式新的框架中都是采用的ORM模式
1.1.1、演示数据的写入
①创建测试方法
②访问查看写入数据
1.1.2、演示数据查询
①创建测试方法
②查看结果
③根据条件进行查询
1.2、TP中的统计方法
1.3、连表查询
1.3.1、inner join使用
①创建数据表并且写入测试数据
②连接查询
③查看效果
④使用field指定字段信息
1.3.1、left join 使用
1.4、原生sql语句
Query:执行查询的sql语句。返回结果集
Execute:执行写入(增加、修改、删除)的SQL语句。返回受影响行数
1.4.1、演示query方法使用
1.4.2、演示execute方法使用
1.5、TP中的事物
事物是mysql提供的一项功能。只针对innodb引擎的数据表。事物需要开启
事物处理方法:
startTrans:开启事物
Rollback:回滚事物
Commit:提交事物
①代码
②结果
TP中的cookie与session
2.1、cookie与session的区别
- cookie是存在客户端
- Session是存储在服务端
- Cookie保存的数据量有限
- session安全性更高
- session基于cookie之上的
2.2、session机制
2.3、TP中session使用
在TP中对于session的所有处理都通过使用session()函数进行处理。
在框架载入时session就已经启动
效果如下
设置session
获取session
删除session
再次查看session
2.4、cookie的使用
查看现有的cookie内容
设置cookie
再次查看结果
删除cookie
再次查看cookie中的内容
验证码
使用验证码一定注意PHP环境当中的gd库的扩展是否开启,并且需要注意到验证码功能是否能够正常使用
TP验证码源码位置:ThinkPHP\Library\Think\Verify.class.php
使用方式:直接实例化类对象调用方法即可
3.1、验证码基本使用
效果如下
3.2、查看验证码使用方式
①查看验证码类的属性配置
②查看构造方法的使用
③查看check方法
④查看生产验证码的方法
3.3、生产验证码并且校验
效果如下
生产验证码
比对验证码
数据分页
4.1、分页实现方式
- 计算总的记录数
- 设置每一页多少条数据
- 获取当前的页码
- 根据当前的页码获取对应的数据本质就是处理limit
- 计算出分页的导航信息
4.2、查看分页类的使用方式
关于分页类的源码地址:ThinkPHP\Library\Think\page.class.php
①查看配置信息
②构造方法
③查看show方法
4.3、使用分类
①创建方法
②处理模板
③效果如下
5、案例-电商后台登录
5.1、分析实现过程
- 创建控制器方法显示登录界面
- 需要显示出验证码
- 用户提交数据、接受并且比对(1、比对验证码2、比对用户名3、比对密码)
- 登录完成,保存用户的登录状态(session或者cookie)。需要跳转到后台首页
- 防止直接翻墙
5.2、显示登录到的界面
5.1.1、显示登录页
①创建控制器方法加载模板
②拷贝登录模板
③修改登录模板的资源地址
5.1.2、显示验证码
①修改模板使用验证码
②创建方法生成验证码
③修改模板引入jQuery
④对验证码绑定点击事件
5.3、实现登录对比
5.3.1、创建数据表
5.3.2、添加测试账户
①创建生成密码的函数
由于增加测试用户时不能确定密码。需要用代码生成密码。由于后期会经常使用该方式进行密码校验等处理。因此封装成为函数
③创建一个测试方法生成密码
④访问测试方法生成密码
⑤根据生产的密码写入测试账户
5.3.3、创建模型
①创建自定义的模型
②定义字段信息
③定义字段映射
④修改模板使用假名
⑤编写自动验证规则
5.3.4、控制器调用方法进行对比
①修改控制器login方法
②创建模型方法实现登录
5.3.5、控制翻墙
①在后台首页中的index方法进行判断
对于此方式,由于后台中除了登录之外。其他的都需要进行是否登录判断。此方式不合理。可以在创建一个公共控制器在构造方法中进行验证。对于除了登录控制器之外其他的控制器都继承公共控制器
②创建公共控制器
③修改Index控制器的继承关系
可能common控制器中有很多公共方法,对于登录有可能会使用到。需要修改login继承common控制器。但是直接继承会出现故障
④修改Login控制器的继承关系
⑤修改公共\\
5.4、实现退出登录
①修改模板连接地址
②创建退出的方法