忘记密码 (通过邮箱来进行重新设置密码)

*总的流程

1.点击忘记密码

页面的代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录页面</title>
</head>
<body><div class="reg_form"><form action="userServlet?type=1" method="post"><ul><li><label >用户名:</label><input type="text" name="uname"><span class=""><i class=""></i></span></li><li><label >密码:</label><input type="password" name="pwd"><span class=""><i class=""></i></span></li><li><a href="update.html">忘记密码</a></li><li><input class="btn" type="submit" value="登录"></li></ul></form>
</div>
</body>
</html>

2.进入到身份验证环节(身份校验)

一.页面的代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>忘记密码</title><script src="demo/js/jquery-3.6.0.js"></script><script src="demo/js/jquery.min.js"></script><script>function sendEmail() {alert(12);var uname=$("#uname").val();var email=$("#email").val();$.ajax({url:"userServlet?type=11",type:"post",dataType:"json",data:{"uname":uname,"email":email},success:function (data) {alert(data.msg);if (data.istrue==1){location.href="inputYzm.html";}} ,error:function (data) {alert(data.msg);if (data.istrue==2){location.href="update.html";}}});}</script>
</head>
<body>
<div class="reg_form"><form ><ul><li><label >账号:</label><input type="text"  id="uname"><span class=""><i class=""></i></span></li><li><label >邮箱:</label><input type="text"  id="email"><span class=""><i class=""></i></span></li><li><input class="btn" type="button" onclick="sendEmail()" value="确认"></li></ul></form>
</div>
</body>
</html>

二.后台代码(servlet)

//单个查询+发送邮件 生成4位随机数字protected void selectOne(HttpServletRequest req, HttpServletResponse resp) throws Exception {PrintWriter out=resp.getWriter();String uname = req.getParameter("uname");System.out.println(uname);String email = req.getParameter("email");System.out.println(email);sys_users one = ss.selectOne(new sys_users(uname,email));//测试数据if(one!=null){System.out.println("cg");resultOne re=new resultOne();re.setIstrue(1);re.setMsg("该用户名邮箱下存在账号");String json= JSON.toJSONStringWithDateFormat(re, "yyyy-MM-dd");out.print(json);//验证身份成功之后 发送邮件给用户 验证码String pt = "1596481760@qq.com";String yzm22 = emailTest.getyzemail(email, pt).toString();req.getSession().setAttribute("yzm22",yzm22);System.out.println("单个查询成功存下的验证码"+yzm22);}else{System.out.println("sb");resultOne re=new resultOne();re.setIstrue(2);re.setMsg("该用户名邮箱下不存在账号");String json= JSON.toJSONStringWithDateFormat(re, "yyyy-MM-dd");out.print(json);//验证身份失败}out.flush();out.close();}

三.后台代码(serviceImpl)

 // 7: .单个查询 验证用户名  (写全单个查询 后面 还用的上)@Overridepublic sys_users selectOne(sys_users u) {//编写单个查询的 sql语句String sql="select * from sys_users where uname='"+u.getUname()+"' and email='"+u.getEmail()+"'";sys_users users = sd.selectOne(sql);return users;}

四.后台代码(daoImpl)

  // 7: .单个查询 验证用户名  (写全单个查询 后面 还用的上)@Overridepublic sys_users selectOne(String sql) {sys_users users=null;try {con= jdbcUtil.getConnection();ps=con.prepareStatement(sql);rs=ps.executeQuery();if (rs.next()){users=new sys_users(rs.getString("uname"));}} catch (SQLException e) {e.printStackTrace();}return users;}

五.emailTest类中的 发送邮件的方法

public class emailTest {public static Integer getyzemail(String to,String from) {Integer random1 = 0;// 收件人电子邮箱// 发件人电子邮箱// 指定发送邮件的主机为 smtp.qq.comString host = "smtp.qq.com";  //QQ 邮件服务器// 获取系统属性Properties properties = System.getProperties();// 设置邮件服务器properties.setProperty("mail.smtp.host", host);properties.put("mail.smtp.auth", "true");// 获取默认session对象Session session = Session.getDefaultInstance(properties,new Authenticator(){public PasswordAuthentication getPasswordAuthentication(){//发件人邮件用户名、授权码【打开邮箱-设置-生成授权码==password】(自己的邮箱和授权码)return new PasswordAuthentication("xxxxxxx@qq.com", "uuekxrwqqyeffjde");}});try{// 创建默认的 MimeMessage 对象MimeMessage message = new MimeMessage(session);// Set From: 头部头字段message.setFrom(new InternetAddress(from));// Set To: 头部头字段message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));// Set Subject: 头部头字段message.setSubject("通知");//产生随机数random1 = (int) (Math.random()*(9999-1000+1))+1000;// 设置消息体message.setText("验证码是"+random1);// 发送消息Transport.send(message);System.out.println("发送成功");}catch (MessagingException mex) {mex.printStackTrace();}return random1;}}

3.身份校验成功后(发送验证码)跳转到输入验证码页面

输入验证码验证的页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title></title><script src="demo/js/jquery-3.6.0.js"></script><script src="demo/js/jquery.min.js"></script><script>function yzEmailyzm() {alert(22);var email=$("#email").val();$.ajax({url:"userServlet?type=10",type:"post",dataType:"json",data:{"email":email},success:function (data) {alert(data.msg);if (data.istrue==1){location.href="hello.jsp";}} ,error:function (data) {}});}</script>
</head>
<body>
<h1>请输入验证码</h1>
<div class="reg_form"><form ><ul><li><label >验证码:</label><input type="text" id="email"><span class=""><i class=""></i></span></li><li><input class="btn" type="button" onclick="yzEmailyzm()" value="确认验证码"></li></ul></form>
</div></body></html>

输入验证码验证的后台

protected void yzemailyzm(HttpServletRequest req, HttpServletResponse resp) throws Exception {//自己输入验证码String yzm = req.getParameter("email");//自动生成的验证码String yzm2 = (String) req.getSession().getAttribute("yzm22");System.out.print(yzm + "==============" + yzm2);PrintWriter out = resp.getWriter();resultOne re = new resultOne();if (yzm.equals(yzm2)) {System.out.print("验证成功");//验证码验证成功 到修改页面 修改密码re.setIstrue(1);re.setMsg("验证码验证成功");String json = JSON.toJSONStringWithDateFormat(re, "yyyy-MM-dd");out.println(json);} else {System.out.print("验证失败");}out.flush();out.close();}

4.用户(通过邮箱收到)验证码后输入验证码

验证跳转到修改用户名的页面》》》》》》》

进入页面后加载出单个查询的 账号和邮箱显示在页面上

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>修改密码 页面</title><script src="demo/js/jquery-3.6.0.js"></script><script src="demo/js/jquery.min.js"></script><script>function selectInfo() {//通过ajax去后台查询数据$.ajax({url:"userServlet?type=14",dataType:"json",type:"post",// data:{},success:function (data) {$("#uname").val(data.uname);$("#email").val(data.email);} ,error:function (data) {}});}</script>
</head>
<body onload="selectInfo()">
<h1>修改密码页面</h1>
<div class="reg_form"><form><ul><li><label>账号:</label><input type="text" id="uname"><span class=""><i class=""></i></span></li><li><label>邮箱:</label><input type="text" id="email"><span class=""><i class=""></i></span></li><li><label>密码:</label><input type="text" id="pwd"><span class=""><i class=""></i></span></li><li><input class="btn" type="button" onclick="updatePwd()" value="确认"></li></ul></form>
</div>
</body>
</html>

显示在页面上的 方法

protected void one_infoName(HttpServletRequest req, HttpServletResponse resp) throws Exception {PrintWriter out=resp.getWriter();resultOne re=new resultOne();String selectone_uname = (String)req.getSession().getAttribute("selectone_uname");System.out.println(selectone_uname);String selectone_email = (String)req.getSession().getAttribute("selectone_email");System.out.println(selectone_email);re.setUname(selectone_uname);re.setEmail(selectone_email);String json = JSON.toJSONStringWithDateFormat(re, "yyyy-MM-dd");out.println(json);out.flush();out.close();}

5.修改密码

忘记密码 (通过邮箱来进行重新设置密码)相关推荐

  1. django重置密码发送html邮件,django 开发忘记密码通过邮箱找回功能示例

    一.流程分析: 1.点击忘记密码====>forget.html页面,输入邮箱和验证码,发送验证链接网址的邮件====>发送成功,跳到send_success.html提示 2.到邮箱里找 ...

  2. java web 邮箱激活 与 忘记密码(重置密码)

    推荐: java后台通用权限管理系统(springboot)(https://blog.csdn.net/zwx19921215/article/details/97806078) 推荐:java 个 ...

  3. 微信企业邮箱登陆入口在哪?企业邮箱忘记密码怎么修改?

    微信企业邮箱怎么登陆?那么微信有没有企业邮箱呢?是有的,就是TOM企业邮箱.在职场办公中,很多重要的通知及正式文件都是通过邮件进行下发传达的,因此邮箱在我们的工作中有非常重要的作用. 微信企业邮箱登陆 ...

  4. 安卓APP登录忘记密码以及通过邮箱找回密码的实现

    本文章主要实现的是APP端点击忘记密码之后,服务器将自动发送密码给APP. 需要做的事有: 1.java发送邮件需要的jar包: 2.在qq邮箱开通IMAP/SMTP服务,并生成授权码 3.编写邮件工 ...

  5. 163邮箱登陆忘记密码怎么办?163手机邮箱怎么登录?

    163邮箱登陆忘记密码怎么办?163手机邮箱怎么登录?邮箱作为一款现代主要通讯工具,为工作.生活带来了很多便利,深受广大用户喜爱.近期,有朋友提问道,邮箱里有很多重要资料,长期未登录,不小心忘记密码了 ...

  6. bilibili账号申诉中心_b站(bilibili)账号忘记密码了怎么办?如何用邮箱找回?找回得多久?...

    哔哩哔哩忘记密码了怎么办?忘记了b站会员账号登录密码的话要怎么找回呢?不记得密码了的用户可以来看下文教程方法找回哦. 哔哩哔哩忘记密码怎么办?怎么用邮箱找回?(快速涨粉上热门!就去B站助推网) 1.进 ...

  7. 163个人邮箱忘记密码找回有几种方法

    近日收到几个VIP邮箱用户的询问,自己的账号如果忘记密码了如何找回,看来大家都没有认真看过我们的TOMVIP邮箱登陆页面噢.在登陆页面有一个忘记密码入口,可以帮助大家找回自己的密码,具体操作步骤是怎么 ...

  8. 记一次foxmail企业邮箱忘记密码

    哎,一换电脑就忘记密码,太心累了 之前也忘记过也不知道咋登录的foxmail客户端 还是记录下吧,不然下次又忘了- 可以先登录企业邮箱网页版,使用微信扫码登录就可以,不需要输入密码 选择使用的企业邮箱 ...

  9. SRC逻辑漏洞-忘记密码/邮箱密码找回/链接token时间戳参数可逆

    链接token参数可逆 通过邮箱找回密码的同时,邮箱中将出现一个含有token的重置URL,该token即为重置凭证,从经验来看,开发人员习惯以时间戳,递增序号,关键字段作为因子,采用某种加密算法或编 ...

最新文章

  1. 双网口相机用序列号打开
  2. Linux之Redis的启动、使用和停止
  3. SCN试验之二 checkpoin scn 与数据库scn的关系
  4. ESB文件调用,windows服务
  5. mybatis应用(二)注解的实现
  6. 工业交换机与普通商用交换机的对比详解
  7. mallco动态分配_malloc动态分配的内存的生存周期是多少?
  8. 一个简单的时间轴demo
  9. Android官方开发文档Training系列课程中文版:管理Activity的生命周期之暂停和恢复Activity
  10. 字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛
  11. python单选题库答案_大学慕课2020用Python玩转数据题库及答案
  12. 在VSCode中编辑HTML文档时,在Dom标签上写style属性时智能提示的问题
  13. swagger入门和实践(含docker部署swagger)
  14. Sublime Text3 插件集合
  15. 电脑计算机丢失msvcp140.dll,电脑缺少msvcp140.dll怎么办
  16. 操作系统——7.虚拟存储技术
  17. Cisco_路由器基础命令
  18. 3.表数据的CRUD
  19. js后代选择器_后代选择器和子元素选择器的区别
  20. conda 安装pytorch(gpu)

热门文章

  1. 科大讯飞回应了:中国版ChatGPT可以乐观以待,有信心实现类似技术跃迁
  2. “区块链+物联网”的一场“网链”能顺利奔现吗?
  3. PDF文档转TXT怎么转?你不知道的几种方法
  4. 1.29 dup、dup2函数
  5. Java泛型:类型檫除、模板和泛型传递
  6. python技巧分享(八)
  7. 微信小程序使用地图map (详细)
  8. 高富帅+白富美 15名程序员界性感的奇葩
  9. E8.BPM企业流程管理系统,提升企业执行力
  10. 使用 Canonical MAAS 部署 openEuler 测试