商城7
作业
关联模块

首先修改一下弹出框里面的展示列表里面的操作这一列(改为一个checkbox)

实操
- 在商品添加页面增加一个关联商品input框

效果:

- 在商品添加页面增加为关联商品增加一个点击事件,做出一个关联商品的弹出框

在商品弹出页面修改页面元素,增加input框,为每个input框绑定点击事件,完成商品ID和商品名称的获取,将获取的信息传递给添加商品父窗口,在子窗口关闭父窗口

效果:

前台的会员模块
今天主要是学习如下几个知识点:
- 注册
- 邮件(邮件激活、找回密码)
- 手机接口(手机验证码)
- QQ互联(第三方登录)(微博互联、微信)(是否愿意去看文档)(只要是第三方的接口,全部要自己去学习文档)

注册
设计表
主键ID
用户名
密码
邮箱
激活 注意:默认是没有激活,则不能登录系统,需要为用户发送一封激活邮件(用户登录自己的注册邮箱后,点击激活才可以登录)
手机号
注册时间
QQ互联openid 注意:第三方登录的时候,我们需要使用一个字段来保存第三方的账号的信息(openID,是腾讯那边发送过来的一个和QQ形成关联唯一字符串 大概为40位左右)

用户注册
- 在Home模块增加一个MemberCotroller.class.php控制器文件,增加一个register方法

- 增加一个register.html视图页面

效果

- 在Home模块增加一个MemberModel.class.php模型文件,完成自动验证和密码处理

用户登录
- 在Home模块的MemberCotroller.class.php控制器文件,增加一个login方法

- 增加一个login.html视图页面

- 在Home模块的MemberModel.class.php模型文件增加一个login方法

- 在首页index.html视图页面展示登录用户的信息

效果

用户退出
1.在Home模块的MemberCotroller.class.php控制器文件,增加一个logout方法

邮件技术
注意:如果使用phpmailer发送总是不成功,建议使用SendCloud这个接口进行处理。
简介
对于邮件技术我们知道如下的这些知识。
常见的邮件传输的协议
答:对于邮件传输也是需要一定的协议。对于邮件的传输的协议分为发邮件的协议和收邮件的协议。发邮件和收邮件协议是不一样的。

SMTP:发送邮件的协议【简单邮件传输协议】
POP3:接收邮件的协议
注意:如果发送邮件的用户的邮箱的域【qq.com/163.com】和收件人的邮箱的域是一样,则邮件服务器直接保存其邮件。
如果不是一样,则邮件服务器会进行中转(邮件服务器内部会配置好如何去中转,和我们路由器)(发垃圾机制)
常见的邮箱端口
答: 发送邮件服务器是使用25端口
接收邮件服务器使用的是 110 端口
先发后收,先小后大。【发小】
开启163邮件服务
一般来说我们要完成邮件功能,需要邮件服务器的支持,我们可以自己去搭建(postfix邮件服务软件)。但是一般来说互联网上存在很多免费的邮件服务器(常见163、搜狐.... 但是有些也是收费的)
注意:如果我们需要使用某个邮件服务器提供的smtp服务或者是pop3服务,需要去对应的管理界面,进行服务的开启。
1. 登录163邮箱界面,点击设置,开启SMTP服务

2. 开启服务

3. 开启授权码

到时候我们使用PHP作为客户端进行邮件的发送。
账号:邮箱 gogery@163.com
授权码:php25php25

用户的激活
在用户注册成为网站的会员后,需要为其发生一封激活邮件,然后用户登录自己的注册邮箱进行点击激活之后,完成用户的激活。
技术点:使用PHP进行邮件的发送。(拿PHP作为客户端使用,需要借助别人写好的一个phpmailer这个类进行邮件的发送)
https://github.com/PHPMailer/PHPMailer

邮箱:gogery@163.com
授权码:php25php25(不是你的邮箱密码,是在自己的web界面设置的授权码)
如果是搜狐、还有QQ邮箱,则去百度相应文档。
1. 将phpmailer类文件放置到网站根目录

- 在function.php文件定义一个sendMail函数


3.在用户注册成功的后置钩子函数里面进行邮件的发送

4. 用户邮箱效果

注意:毕竟是免费的,有的时候会进行限制,到时候大家去公司,完全是不要担心,公司给的账号和地址肯定是收钱。(阿里大于、阿里邮件队列服务器)

sendCloud邮件发送
简介
是搜狐旗下投资的一家公司进行开发的产品(武汉)。提供了相应的API接口可以完成邮件或者是短信。

使用
- 使用后台的邮件发送(a. 定义一个发送邮件的邮件模板 b. 获取一下AK 和 SK)稍后还要使用官方提供的SDK(开发包:提供很多基础性代码, 功能提供都有提供,但是业务逻辑是自己去实现, 需要我们去开发者中心,查看文档,如何调用,如何获取调用后的结果)进行代码的测试(需要AK和SK)

文档:http://www.sendcloud.net/doc/sdk/php/
2. 生成SK密钥信息

账号:gogery_test_PiMCLV
密码:MG1RO6R3HJ2cXtJf
定义一下自己的邮件模板

用户自定义模板

3. 下载对应的SDK开发包(基本性功能代码)

提供一个类库(基于上面的SDK进行重新整理,更适合我们自己使用)

这里的Mailer.php是经过重写之后的,建议使用这个。
ThinkPHP集成第三方类库
建议第三方的类库放置该目录下:

调用:
- 将Mailer.php文件放置到thinkPHP的第三方扩展目录

- 在用户成功注册后,在MemberModel.class.php模型的注册的后置钩子函数里面载入上面的类,进行邮件发送

- 在MemberController.class.php控制器文件增加一个active方法,完成用户的激活操作

作业(下去实现):邮件的有效期之后24小时(原理性:就是在发送的时候,记录一下发送的时间(到底记录在哪里比较 session 关闭浏览器就没了 最好记录在memcache里面 redis记录))

作业:实现找回密码
手机短信验证

简介
我们这次使用的是荣联云通讯进行短信接口调用。
查:阿里大于

使用

建议:多看文档
- 修改相应的配置信息

- 调用

效果:

常见问题
- 类似这样的错误curl_init is undefind?
答:是php.ini里面的curl扩展没有开启

- 不是测试手机号,不能接受短信

由于项目没有上线,则不能使用其他的手机号,只能注册时候自定在后台添加的测试号
解决

thinkPHP项目集成
- 将荣联接口复制到TP的类库目录

- 在register.html注册页面为发送验证绑定事件,发送手机验证码


- 在MemberController.class.php控制器文件的ajaxCode方法里面完成处理


注意:这里的randCode需要在function.php进行定义

- 在MemberController.class.php控制器文件的register方法里面完成验证的判断

memcache使用
1. 启动memcache服务(-m 代表给memcache进程分配16M的内存)默认监听11211端口

- 开启PHP操作memcache扩展

百度下:

- 实例化memcache进行操作

memcache限制用户注册
- 在MemberController.class.php控制器文件的构造方法里面获取memcache实例

- 在MemberController.class.php控制器文件定义如下两个方法进行限制


- 在MemberController.class.php控制器文件的ajaxCode方法里面完成方法调用


浙公网安备 33010602011771号