php+jQuery+Mysql找回密码----ThinkPHP
最近用ThinkPHP做了一个邮箱找回密码功能,在遭遇了N个bug之后终于做成了,下面分享一下邮箱找回密码功能的实现:
邮箱找回密码实际上就是在用户通过验证之后重置密码的过程,一般开发者会在验证用户信息后通过程序生成一个新密码
或者生成一个特定的链接并发送邮件到用户邮箱,用户从邮箱链接到网站的重置密码模块重新设置新密码。
一般步骤是:
1.表单输入注册时的邮箱;
2.验证用户邮箱是否正确,如果用户邮箱不存在网站的用户表中,则提示用户邮箱未注册;
3.发送邮件,如果用户邮箱确实存在用户表中,则组合用于验证用户信息的字符串,并构造URL发送到用户邮箱中;
4.用户登录邮箱收取邮件,点击URL链接到网站验证程序;
5.网站程序通过用户请求的字符串查询本地用户表,比对用户信息是否正确;
6.如果正确则转到重置密码页面重新设置新密码,反之则提示用户验证无效。
首先肯定要先写一个找回密码的视图页面啦,示例代码如下:

视图界面显示如图:

这个弄完之后,接下来要对用户输入的邮箱进行判断验证(因为找回密码是通过给用户发送邮件来实现重置密码的,所以用户在注册时邮箱是必填的)
jQuery邮箱验证,代码:

以上使用的jQuery代码很方便简洁的完成了前端交互操作,如果您有一定的jQuery基础,那上面的代码一目了然,不多解释。
当然别忘了在页面中加载jQuery库文件,如果写完验证规则却发现功能没实现,那80%是jquery或者其他文件加载路径错了导致没加载必要的文件(这是个深刻的教训,我刚开始就大意了)
然后通过Ajax把用户输入的邮箱发送到控制器进行验证Email是否存在用户表中,如果有,则读取用户信息,将用户id、用户名和密码进行md5加密生成一个特别的字符串作为找回密码的验证码,然后构造URL。
同时我们为了控制URL链接的时效性,将记录用户提交找回密码动作的操作时间,最后调用邮件发送类发送邮件到用户邮箱。
代码如图:

发送邮箱函数如下:

里面有一个smtp类,这里面封装的函数比较多,我就不截图了,好了,这个时候你的邮箱将会收到一封关于密码找回的邮件,邮件内容中有一个URL链接,点击该链接到自己写的指定页面来验证邮箱。


邮箱验证到这了算是完成了,这个邮箱验证是我参考链接http://www.helloweba.com/view-blog-229.html做的,确实很不错,虽然有些地方总是出bug不过还好,如果对这种找回密码感兴趣的可以参考一下,想要源代码的可以直接去原文章,都差不多的。原文章里面有一个smtp包提供,我也是在那里下载的。 (完)
php+jQuery+Mysql找回密码----ThinkPHP的更多相关文章
- mysql找回密码
1.打开任务管理器,关闭mysqld.exe 2.win+r运行cmd打开控制台,输入mysqld --skip-grant-tables启动服务器 3.win+r重新运行cmd打开控制台,输入mys ...
- mysql 找回密码方法
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录 ...
- MySQL 找回密码
Windows: 1.关闭正在运行的MySQL. 2.打开DOS窗口,转到mysql\bin目录. 3.输入mysqld --skip-grant-tables回车.如果没有出现提示信息,那就对了. ...
- (进阶篇)PHP+Mysql+jQuery找回密码
通常所说的密码找回功能不是真的能把忘记的密码找回,因为我们的密码是加密保存的,一般开发者会在验证用户信息后通过程序生成一个新密码或者生成一个特定的链接并发送邮件到用户邮箱,用户从邮箱链接到网站的重置密 ...
- PHP+Mysql+jQuery找回密码
通常所说的密码找回功能不是真的能把忘记的密码找回,因为我们的密码是加密保存的,一般开发者会在验证用户信息后通过程序生成一个新密码或者生成一个特定的链接并发送邮件到用户邮箱,用户从邮箱链接到网站的重置密 ...
- ThinkPHP 3.2 用户注册邮箱验证帐号找回密码
一.前言 当然现在有的网站也有手机短信的方式找回密码,原理就是通过发送验证码来验明正身,和发送邮件验证一样,最终还是要通过重置密码来完成找回密码的流程. 本文将使用PHP+Mysql+jQuery来实 ...
- MySQL root密码找回
以MySQL多实例为例,演示找回MySQL root的密码 1.关闭mysql服务 [root@mysql ~]# mysqladmin -uroot -poldboy123 -S /data/330 ...
- MYSQL设置远程账户登陆总结,mysql修改、找回密码、增加新用户,MySQL数据库的23个注意事项
1.5 设置及修改Mysql root用户密码1 设置密码方法mysqladmin -u root password '123456'mysqladmin -u root -p'123456' pas ...
- 4、mysql登录密码修改和找回
操作适合5.1-5.5:当前的环境是5.5的环境: 4.1.mysql启动的原理: mysqld_safe -> my.cnf ->mysql.sock http://blog.51cto ...
随机推荐
- JAVA 的 Date、Calendar的常用用法
一.Date与String的互转用法,这里需要用到SimpleDateFormat Date date = new Date(); //设置格式 SimpleDateFor ...
- 笔记-JDBC和commons-dbutils
1.前言 玩过Java web的人应该都接触过JDBC,正是有了它,Java程序才能轻松地访问数据库.JDBC很多人都会,但是为什么我还要写它呢?我曾经一度用烂了JDBC,一度认为JDBC不过如此,后 ...
- FastDFS 集群 安装 配置
这篇文章介绍如何搭建FastDFS 集群 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的 ...
- hadoop2的mapreduce操作hbase数据
1.从hbase中取数据,再把计算结果插入hbase中 package com.yeliang; import java.io.IOException; import org.apache.hadoo ...
- RxSwift 对 MJRefresh 使用的封装
对于一个很常用的两个库, MJRefresh 如何可以像 UIButton 使用方式呢: btn.rx.tap.subscribe(...) Rxswift 中的很多类似处理的方式都使用了跟下面极为相 ...
- TinyXML2的使用
-----------------------------------------------------------------2015年7月21日16:37:53----------------- ...
- hdu 2196 Computer(树形DP经典)
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- Android 开发笔记___textvieww__跑马灯效果
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- PgSql on Docker with HaProxy 反向代理
Run PgSql on Docker as Remote Db docker run -d -it \ --name pgdb \ -p 5432:5432 \ -e POSTGRES_USER=p ...
- 技嘉 gigabyte b75m d3v 主板 定时开机无效问题解决
BIOS 里面设置定时开机后发现到点并没有正常启动~~~ 百思不得解.后来发现原来是WIN8系统下的控制面板的关机并非正常关机,而是不保存设置的非正常关机,在开始菜单右键——关闭或注销——关闭计算机 ...