优化的网站注册时[验证邮箱]的流程

你通常见到的一个流程大概是这样的:
1. 填写用户名、密码、重复密码、Email、……,提交;
2. 收取邮件,点击激活链接;
3. 进一步完善资料或使用网站。

照上面的流程,请大家思考:
“在邮箱激活链接未得到使用之前,网站就已经将该Email地址与一个用户名和密码绑定了关系,这是否存在问题?”

这当然是存在问题的,就像银行不会还没看你身份证时,就先发一张银行卡和密码给你。
既然要验证邮箱是否有效,就不应该在邮箱未验证成功之前就在该邮箱上绑定上用户名、密码等信息。
正常的流程应该是:用户通过邮箱获得了激活链接,然后填写“用户名”、“密码”等个人信息,提交完成注册。

不然会存在什么问题呢?问题可是不少,可能存在的问题有:(注意只是可能)
1. A填写了B的邮箱,B无法再使用此邮箱注册。
2. A填错了邮箱,不提供更改验证邮箱的话A因为收不到激活邮件无法完成注册。(注意因为前边错误,所以要增加功能补救了,还要提供更改验证邮箱,产品的开发与使用因此而没效率)
3. B收到一封别人发错的激活信写到:欢迎您亲爱的A。B莫名其妙的点击了链接,发现已经注册了某网站,但是B自己不知道用户名或者密码。
4. A填错成了B的邮箱,B错给激活了,A照常使用着用户名和密码使用着该网站的功能。整天收到通知邮件的却是B。
5. C随意填写很多的假邮箱占用大量的用户名,导致很多用户名无法再被他人使用。
……发生错误的情况等等,可能还不止这些。

邮箱验证与手机验证其实是一种同理的情况。
我们常常知道手机验证时,让用户先收到短信验证码,验证码通过之后才让用户干他能干的事情。
如果你的网站是只有验证邮箱有效后才能使用的网站的话,也是同理。先收到激活链接,验证有效而后填写密码等资料。
这样一般宽松的验证邮箱的流程就是:
1. 填写经常使用的邮箱,提交,发送验证链接。
2. 收到邮件,点击验证链接。
3. 填写密码等个人资料,完成注册。
为什么说是宽松的验证邮箱流程呢,因为填写邮箱时,你可以填写任何人的Email地址。你可以在此完成自己邮箱的注册,同样可以填写朋友的邮箱邀请朋友注册。(一功能多用,省了再开发一个“邀请朋友”的功能了,赶巧了。)

注意:如果是手机验证注册也采用这种宽松的流程的话就可能存在些问题。因为网站向外发送短信验证码也是有成本的,恶意用户要是填写各种号码请求验证会浪费网站的资源,同时对收到短信的用户来说也是一种垃圾短信。宽松的邮箱验证流程也是一样,只是网站向外发送一封Email的成本比较低而已。
严谨一些手机验证注册的流程应该是这样的:
1. 用户向网站服务台号码发送一条申请注册的指令。
2. 网站服务台收到指令,向用户手机回发一条验证码短信。
3. 用户输入验证码,完成注册。

现在很多的网站Email服务器地址已经被不少的邮件运营商视为了垃圾邮件。为了避免在宽松的邮箱验证流程下,用户填写了Email验证请求,但用户要到“垃圾邮件箱”下收到验证邮件,或者根本就收不到验证邮件。建议邮件验证注册也采用像严谨一些的手机验证注册一样。
1. 用户向网站邮件服务器发送一条申请注册的指令邮件。(用户向服务器地址发信后,服务器地址会自动出现在用户的“通讯录”当中,这样服务器回发的邮件不会再被“垃圾邮件拦截”。)
2. 网站邮件服务器收到申请注册的指令,回发一封完成该邮箱注册的链接。
3. 用户点击该加密链接,填写密码等个人信息,完成注册。

以上说的都是只有验证邮箱有效才能使用网站产品的网站,那么有人要问:我要是不验证邮箱也能让用户使用部分功能的网站怎么办?

不验证邮箱也能让用户使用部分功能的网站,那就是先注册后验证的方法。
注册时让用户填写:用户名(登录名,注意因为邮箱还没验证不可用邮箱。)、密码、邮箱以及其它个人信息,完成注册。网站的基本功能用户就可以使了。
用户要是同时填写了邮箱,可以向该邮箱发送邮箱绑定用户名的链接。要是没有填写可以日后在“个人资料”里填写,并点击“绑定邮箱”按钮,发送邮箱绑定用户名链接。但是下面要注意:当先完成注册后绑定邮箱时,在用户点击绑定链接后,到达的页面要再次验证要绑定邮箱的用户身份。也就是让要绑定此邮箱的用户输入自己的用户名及密码。验证无误,方可完成该用户名与该邮箱的绑定。不然A填写了B的邮箱要求绑定,B随便点击了链接,结果A却绑定上了B的邮

时间: 2024-08-06 07:58:19

优化的网站注册时[验证邮箱]的流程的相关文章

注册时验证按钮倒计时

// 按钮点击事件 -(void)startTime{    __block int timeout=30; //倒计时时间    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);    dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);   

JavaScript实现注册时检查邮箱,名称,密码等是否符合规则

大概实现了,用户名是否存在,邮箱是否已注册,密码是否符合复杂度. //对用户名校验是否存在function checkname(){ //alert("checkname"); var f=false; //javascript所有的变量都是以var定义的 //javascript的变量属于弱类型 //获取用户输入的用户名 var name = document.getElementById("usernameRe").value; //去除字符串两端空格 name

用户找回密码功能JS验证邮箱通过点击下一步隐藏邮箱输入框并修改下一步按钮的ID

//这里是BaseDao 1 /** 2 * 获得一个对象 3 * @param hql 4 * @param param 5 * @return 6 */ 7 public Object get(String hql, Object[] param){ 8 List<Object> objects = this.getHibernateTemplate().find(hql, param); 9 if (objects != null && objects.size() &g

注册时的一些验证

注册时的一些验证: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&quo

倒计时、点击移动变色与注册时,JS验证密码是否正确

<input id="b1" type="button" value="同意(10)" disabled="disabled" /> <script type="text/javascript"> var t = 10; var aa = window.setInterval('a()', 1000); function a() { var b = document.getEleme

struts2中使用ajax验证邮箱(用户名)是否被注册

action类: package com.grace.myblog.view.action; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import org.springframework.stereot

如何注册一个gmai邮箱,跳过验证

教程来源自这个github链接 如何注册一个gmail邮箱,如何跳过短信验证,简单说个技巧 先保证能打开 www.google.com gmail注册页面,最难通过的就是短信验证 接下来 骚操作 打开 www.google.com搜索短信验证码接收 随便打开一个平台,注册,登陆,充值(不想充值?那算了) 然后用平台提供的号码,接收短信即可 补充:网上教程目前没有100%能跳过短信验证,还是老实用号码接收短信吧. 原文地址:https://www.cnblogs.com/502502xyz/p/1

PHP激活用户注册验证邮箱

本文将结合实例介绍如何使用PHP+Mysql完成注册帐号.发送激活邮件.验证激活帐号.处理URL链接过期的功能. 注册邮箱激活流程 <ul class='ul_demo''> <li>1.用户注册</li> <li>2.插入用户数据,此时帐号未激活状态.</li> <li>3.将用户名密码或其他标识字符加密构造成激活识别码(你也可以叫激活码).</li> <li>4.将构造好的激活识别码组成URL发送到用户提交

java 实现注册时发送激活邮件+激活

在很多网站注册的时候,为了验证用户信息的真实合法,往往需要验证用户所填邮件的准确性.形式为:用户注册时填写邮箱,注册完成后,网站会向用户所填邮箱发送一封激活邮件,用户点击激活邮件中的链接后,方可完成注册. 最近项目中也用到这个需求,做了个Demo与大家分享,大至思想如下: 数据库表结构 用户表t_user有五个字段分别为用户名.密码.邮箱地址.激活码.状态: | username | password | email |code | state | 核心代码: UserManager.java