TP06笔记找回密码+短信验证+购物车.docx
- 文档编号:23000664
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:23
- 大小:1.30MB
TP06笔记找回密码+短信验证+购物车.docx
《TP06笔记找回密码+短信验证+购物车.docx》由会员分享,可在线阅读,更多相关《TP06笔记找回密码+短信验证+购物车.docx(23页珍藏版)》请在冰豆网上搜索。
TP06笔记找回密码+短信验证+购物车
邮箱验证技术
一、用户状态激活
发送SMTP协议端口25
接收pop3协议端口110
先发后收、从小到大
用户激活的时候
问题:
1.用户激活邮件应该什么时候发送?
(需要发送uid(需要隐藏)、使用数字签名技术防止被篡改)
答:
1.应该在用户注册数据入库前生成一个token(唯一性),然后在发送邮件内容的时候,也要传递该token信息,主要是防止用户做篡改
2.应该在用户成功注册后的后置钩子函数里面完成邮件发送(邮件的发送1.base64_encode($uid)隐藏后的id2.传递一个token,防止用户篡改)
二、找回密码
1.需要用户点击找回密码
2.跳转到一个可以让用户输入用户注册时候填写的邮箱地址
3.然后服务器端根据用户传递的邮箱,查询对应的ID和token信息
4.发送对应的修改密码的链接地址给用户的邮箱
5.用户登录自己的邮箱,完成密码的找回或者修改
问题:
模型中为什么能直接使用表中的字段?
(基本功)
答:
1.create方法调用的时候把表单的数据赋值了对应的$model->data=$data
2.__get()魔术方法在调用一个对象不存在的属性的时候会被调用
例如:
当$userModel->password对象的password属性不存在的情况下,这个时候魔术方法__get(‘password’)就会被调用的,并且将该属性作为参数传递给该魔术方法
3.__set()魔术方法在设置一个对象不存在的属性的时候会被调用
例如:
当$userModel->password=$data[‘password’]做赋值操作的时候,对象的password属性不存在的情况下,这个时候__set(‘password’,$data[‘password’])魔术方法会被调用,并且将属性和和值作为参数传递给该魔术方法
代码
1、发送找回密码的邮件
1.修改login.html页面,增加一个找回密码的链接
2.在userController里面增加一个remeber方法
4.邮件发送(注意有的时候,邮件会被发送到垃圾桶里面)
二、用户更加邮件内容重新更改密码
1.当用户点击找回密码按钮后,跳转到一个更新密码的表单find.html
2.在userController里面定义一个find方法,用户更新用户提交的密码
a)首先先根据ID取出用户的信息,在表单显示
find.html页面显示
b)然后完成用户点击【完成找回】的post数据接收
注意:
需要在更新数据入库前完成密码的加密操作
短信验证技术
主要目的:
窃取用户的资料
简介
应用场景:
用于用户注册、身份确认、重要资料修改及会员服务类的通知(支付宝余额发生更改)
的场景,短信验证码调用简单、稳定及时。
(注册、订单成功,高可用集群系统出问题之后发送提示)
实际目的:
获取用户的资料,方便商家促销活动的开展以及一些商家信息的推送。
实际场景:
1.注册行为
2.新浪邮箱注册
地址:
技术实现
主要是通过第三方提供的接口来实现短信的验证。
(第三方公司是和移动或者联通合作)
技术提供方:
容联云通讯
官网:
测试地址:
网址:
开发手册:
地址:
开发SDK代码包下载:
地址:
简单入门
利用短信验证技术,使用用户注册的案例,在用户在网站注册会员的时候,需要用户通过输入手机号码,然后获取验证码,并在验证通过之后,方可注册。
配置
1.在容联云通讯注册会员账号信息
2.进入控制台,查看测试demo
3.由于现在使用的是非正式环境应用,只能使用测试账号。
在测试demo获取获取账号ID和token以及应用ID以及服务器IP
4.接口文件
5.在SendTemplateSMS.php文件中添加测试demo的账号ID和token以及应用ID以及测试环境IP
6.【注意】添加测试手机账号信息,由于应用没有正式上线,测试手机号码只能是固定的。
业务流程分析
项目代码
注意:
使用该短信验证接口需要开启curl扩展
解决
1.修改注册页面,添加一个手机验证码获取按钮
register.html页面
2.为【获取免费手机验证码】绑定点击事件完成ajax请求
3.在服务器端完成短信的发送和验证码的保存
a.接收前端传递的手机号码和验证码的生成
4.在userController的register方法里面完成验证码的验证功能
公司版本:
线上环境
Apache2.2
php-5.3.x(目前是兼容性最好)php-fpm模式(5.3.12以后php单独的运行成一个服务)
MySQL-5.5(5.6InnoDB)=====mariadb(10.x版本)percna
linux---centos(5.5\6.5)(redhat--10w)
Ubuntu14.04版本(麒麟Linux)(长期支持7年之久)---vagrant(boxes类型镜像)
虚拟机《《---boxes
环境一致
购物车
简介
主要是对于电商网站,在用户在购买物品后,用来保存购买的商品信息。
问题1:
购物的数据使用什么来保存?
答:
存储技术
1.session关闭浏览器
2.MySQL可以一般在用户登录后会将购物车的数据保存到里面,实现用户在何时何地(任何时间任何浏览器任何IP下都可以看到自己加入购物车的数据)都可以查看到自己购物车的数据。
3.cookie可以一般在用户没有登录的情况下来实现商品的保存。
(1.只能在有限的浏览器下才能看到的到,cookie是区分浏览器的)
4.memcache不可以一般都不会
额外网站:
浏览器迷
通过上面的比较可以得到在用户没有登录的情况下使用cookie来保存购物车数据;登录后会把cookie的数据转存到MySQL的表中,同时清空cookie里面的信息;
注意:
1.京东单次购买一件商品最多200件
2.通过发现京东在用户没有登录的情况下,把数据是保存到cookie里面的
3.当用户在没有登录的情况下,购买的物品会加入到购物车(cookie保存);当用户登录后会把cookie里面的数据转存到MySQL的表中,同时一定会清空cookie。
这个时候购物车的数据已经被保存到MySQL的数据表中了,用户可以在何时何地都查看了。
问题2:
什么样的数据适合保存到购物车里面?
答:
cookie保存:
1.商品ID
2.商品属性ID
3.购买的数量
MySQL的表保存:
1.商品ID
2.商品属性ID
3.商品数量
4.用户ID
问题3:
cookie中保存什么样的数据结构?
答:
1.cookie里面只能保存序列化的数据(字符串)
2.session里面能保存数组吗?
因为session会自动把复合数据类型序列化。
$_COOKIE[‘name’]=serialize(array(1,3,4));可以
$_SESSION[‘name’]=array(12,24,5);可以
那购物车里面保存的数据结构是怎么样的?
cookie中如下
array(
‘goods_id-goods_attr_id’=>goods_number,
)
含义大致为:
13红色4G深圳iPhone
89白色3G广州iPhone
array(
‘13-2,3,4’=>12,
‘89-8,9,17’=>34,
)
MySQL--cart表
id
goods_id
goods_attr_id
goods_number
user_id
1
13
2,3,4
12
7
2
89
8,9,17
34
7
卖了商品ID为13(属性2,3,4)和89(属性8,9,17)的这两类商品,13卖了12件89卖了34总共卖了46件商品
MySQL-Cart表
对于用户登录后,需要把数据保存到MySQL的cart表里面。
表结构如下
单选属性的完善
补充完成商品属性显示
1.在indexController的detail方法里面完成单选属性的获取
注意:
需要对单选属性处理:
相同的单选属性放在一起,形成如下的结构
2.属性显示
3.效果
购物车数据入库
1.创建一个cartController控制器,添加一个addToCart方法用来收集商品ID,商品属性ID和商品数量
注意:
在处理商品属性ID的时候,可以对提交的数据unset到商品ID和商品数量后等到商品属性ID数组,然后使用implode分割成字符串
2.定义一个CartModel,定义一个addToCart方法来入库数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TP06 笔记 找回 密码 短信 验证 购物