关于通过邮箱找回密码的实现
来源:互联网 发布:swift playground mac 编辑:程序博客网 时间:2024/04/29 07:21
首先要自己配置下自己所使用的smtp服务器,这里使用的是QQ的
//邮箱配置项'SWIFT_HOST'=>'smtp.qq.com','SWIFT_USERNAME'=>'XXXX@qq.com','SWIFT_PASSWORD'=>'abrsjjqtpfgndccc',
// 验证验证码// 通过验证码后 查找邮箱 然后将该邮箱对应的修改密码链接发过去// 该链接链接到一个修改方法 通过寻找verify 找到用户 修改其密码 public function mima(){ // 并且设定好十分钟后才可以再发链接到邮箱 if(!empty($_POST)){ $Reader = D('reader'); $where = array(); $where['reader_email'] = I('post.reader_email'); $where['reader_name'] = I('post.reader_name'); $rst = $Reader -> where($where) -> find(); if($rst == false){ $this->redirect('Index/mima','',0.01,'<script>alert("输入错误");</script>'); exit; } // 如果通过了验证 账号 和 邮箱 则继续 否则redirect + 提示验证码错误 $where = array(); $where['reader_email'] = $_POST['reader_email']; $reader = $Reader -> where($where)->find(); // 如果存在该邮箱属于用户则继续 $email = $reader['reader_email']; $username = $reader['reader_name']; $userpwd = $reader['reader_pwd']; $id = $reader['id']; $modtime = time(); //创建用于激活识别码 $token = md5($username.$userpwd.$email.$modtime); //过期时间为10分钟后 $token_exptime = time()+10*60; $dt = array( 'id' => $id, 'token' => $token, 'token_exptime' => $token_exptime, ); $link = $Reader -> save($dt); if($link){ $url = U('active');//用于激活的地址 $end = strrpos($url,'.'); $url = substr($url,0,$end); $emailsubject = "XXXXX";//邮箱标题 //邮箱内容 $emailbody = "尊敬的".$username.": <br/>请点击链接修改您的帐号密码。 <br/> <a href='".__APPURL__."/$url?verify=".$token."' target='_blank'>".__APPURL__."/$url?verify=".$token."</a> <br/>如果以上链接无法点击,请将它复制到你的浏览器地址栏中进入访问,该链接10分钟内有效。<br/> 如果此次激活请求非你本人所发,请忽略本邮件。 <br/> <p style='text-align:right'>-------- 敬上</p>"; $rs = send_email($email,$emailsubject,$emailbody); //send_email(邮箱,邮箱标题,邮箱内容); if($rs){ $msg = '恭喜您,提交成功!请登录到您的邮箱修改您的密码!'; }else{ $msg = '提交失败!'; } $this->redirect('Index/index',array(),0.00001,"<script>alert('$msg');</script>"); exit; } }else{ $this->display(); } }
//修改地址 public function active(){ $Reader = D('reader'); if(!empty($_POST)){ $Reader->create(); $rst = $Reader->save(); if($rst){ // 记录你认为必要的session $this->redirect('Index/index','',0.001,'<script>alert("修改成功");</script>'); exit; }else{ $this->redirect('Index/index','',0.001,'<script>alert("修改失败");</script>'); exit; } // 根据token查找 // if OK 并且链接未过时 则提供修改页面 并且修改到token对应上 }else{ $verify = stripslashes(trim($_GET['verify'])); $time = time(); $where['token'] = $verify; $reader = $Reader -> where($where)->find(); if($reader['token_exptime'] < $time){ // 超时 $this->redirect('Index/index','',0.001,'<script>alert("该链接已经失效");</script>'); exit; } $this->assign('id',$reader['id']); $this->display(); } }
/** * send email by swiftmailer * * @param string|array $to 收件人 * @param string $subject 主题 * @param string $content 内容 * @return int 发送的邮件数目 */function send_email($to, $subject, $content){ vendor('swiftmailer.swift_required'); // $transport = Swift_SmtpTransport::newInstance(C('SWIFT_HOST'), 25) $transport = Swift_SmtpTransport::newInstance(C('SWIFT_HOST'), 465, 'ssl') ->setUsername(C('SWIFT_USERNAME')) ->setPassword(C('SWIFT_PASSWORD')); $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance() ->setSubject($subject) ->setFrom(array(C('SWIFT_USERNAME') => '某某某')) ->setTo($to) ->setBody($content, 'text/html', 'utf-8'); return $mailer->send($message);}
阅读全文
0 0
- 关于通过邮箱找回密码的实现
- 通过邮箱找回密码的实现
- 通过邮箱找回密码
- 通过邮箱找回密码
- 通过邮箱找回密码
- php通过邮箱找回密码
- php通过邮箱找回密码
- JAVA实现通过绑定邮箱找回密码功能
- JAVA实现邮箱找回密码
- Java实现邮箱找回密码
- 发送邮箱实现找回密码
- Java实现邮箱找回密码
- java WEB开发 找回密码 如何通过注册时候的邮箱找回(修改)密码
- 通过邮件找回密码功能的实现
- 通过邮件找回密码功能的实现
- 通过邮件找回密码功能的实现
- C# 通过发送邮箱找回密码
- thinkphp通过邮箱找回密码功能解析
- java基础-冒泡排序
- 模式读后感
- 二级指针传参和函数指针
- JS中关于clientWidth offsetWidth scrollWidth 等的含义
- Python语法关注点想对于c/c++(一)
- 关于通过邮箱找回密码的实现
- 2017锤子科技发布会
- WEBGL学习【八】模型视图投影矩阵
- python中hashilib模块基础用法(hashilib加密)
- 028day(时间复杂度的了解和各进制的复习)
- 理解code review的含义
- 文章标题
- 20171107
- java8新特性回顾(四)---并发增强之Striped64和longAdder