首页 > 作文

thinkphp实现用户注册时邮箱激活

更新时间:2023-04-08 11:13:58 阅读: 评论:0

有些网站在注册的时候,会向用户的邮箱发送邮件,点击邮件中的链接激活账户,基本原理就是在注册的时候(即点击发送邮件的时候),先把用户的信息存进数据库,另外还有一个激活状态的字段(默认是未激活)点击邮件中的链接,验证通过之后,该字段状态会改为已激活,邮件中的链接信息包括:用户id(只要是在数据库中能找到对应的数据就行,不一定是id),激活码,点击这个链接之后,会把这些数据传到我们写好的一个方法里面,只要在这个方法里面验证即可。

业务流程

1、用户提交注册信息

2、写入数据库,此时账号未激活

3、将用户名密码或其他标识字符进行加密构成激活码

4、将激活码和用户的id组成url发送到邮箱

5、用户登陆邮箱。点击url激活

6、验证激活码,正确就激活账号,更改激活状态

数据库设计

发送邮件

发送邮件之前需要加载phpemailer类,可以看我上一篇文章thinkphp5+phpmailer实现发送邮件

public function index()    {        $toemail = 'xxx@126.com';    //这里写的是收件人的邮箱        $active_url = "http://test.zxf/index/ndmail/active.html?id=1&active_key=123";        $body =  "亲爱的".$toemail.":<br/>感谢您在我站注册了新帐号。<br/>请点击链接激活您的帐号。<br/>                     <a href='".$active_url."' target= '_blank'>点击激活</a><br/>                     如果以上链接无法点击,请将它复制到你的浏览器地址栏中进入访问,该链接24小时内有效。";         $mail=new phpmailer();        $mail->issmtp();    // 使用smtp服务(发送邮件的服务)        $mail->chart = "utf8";    // 编码格式为utf8,不设置编码的话,中文会出现乱码        $mail->host = "smtp.qq.com";    //学骑自行车作文 发送方的smtp服务器地址        $mail->smtpauth = true;    // 是否使用身份验证        $mail->urname = "xx@qq.com";    // 申请了smtp服务的邮箱名(自己的邮箱名)        $mail->password = "xxxx";    // 发送方的邮箱密码,不是登录密码,是qq的第三方授权登录码,要自己去开启(之前叫你保存的那个密码)        $mail->smtpcure = "ssl";    // 使用ssl协议方式,        $mail->port = 465;    // qq邮箱的ssl协议方式端口号是465/587        $mail->tfrom("xx@qq.com","测试发件人");    // 设置发件人信息,如邮件格式说明中的发件人,        $mail->addaddress($toemail,'测试收件人');    // 设置收件人信息,如邮件格式说明中的收件人        $mail->addreplyto("xx@qq.com","reply");    // 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址        $mail->subject = "这是一个测试邮件";    // 邮件标题        $mail->body = $body;// 邮件正文                $mail->char泰州有哪些大学t = "utf-8";   //字符集        $mail->encoding = "ba64"; //编码方式        $mail->ishtml(true);    //支持html格式内容       if(!$mail->nd()){    // 发送邮件           echo "message could not be nt.";           echo "mailer error: ".$mail->errorinfo;    // 输出错误信息        }el{            echo '';            return '发送成功';        }    }

发送成功之后,邮件内容,注意,如果发送之后,邮件内容不能解析html代码,需要添加支持html格式内容 $mail->ishtml(true);

验证注册激活账户

public function active()    {        $data = request()->param();        // 通过id找对应的激活码        $active_key = db::table('active')->where(['id'=>$data['id']])->value('active_key');        if ($active_key) {            // 验证激活码是否正确 宿的意思           if ($active_key == $data['active_key']) {                /入党简历怎样写/ 更改激活状态                $res = db::table('active')->where(['id'=>$data['id']])->update(['status'=>1]);                if ($res) {                    echo "激活成功";                }el{                    echo "激活失败";                }            }el{                echo "激活码不正确";            }        }el{            echo "用户不存在";中国建设银行企业网上银行登录        }    }

这里只是简单举例,安全性还不高,可以对激活码加密,添加激活码的过期时间等提高安全性

本文发布于:2023-04-08 11:13:49,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/ae2d091a6540a5931ad349a8509097f9.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:thinkphp实现用户注册时邮箱激活.doc

本文 PDF 下载地址:thinkphp实现用户注册时邮箱激活.pdf

相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图