我是新手,到这就让我做这个。。我目前的思路是这样,离焦调ajax验证用户,点击获取验证码的时候调ajax调用发短信的接口和根据手机号(用户名)生成一个空表获取到userid,用户都填完整后点击下一步form提交,后台根据userid 来update用户表,进行新用户注册,但这样问题是 用户点击获取验证码而不提交的时候就再user表中生成了一条username的数据,等用户在刷新页面重新填写的时候,就已经存在了,哪位大神给个“详细”的思路,真心感谢。
1发送验证码,同时把验证码和手机号、ip、时间戳、当天发送次数保存在数据库中(记得查询是否已经达到发送限制条数)
2校验验证码是否正确:根据手机号和验证码及ip、时间戳,查询此验证码是否正确
3为什么存这些字段?防着用户不停发送,浪费验证码0.5毛钱,也防止别人攻击
验证码发送和验证及最后注册,都不用form表单提交,采用以下方式
发送验证码:
1 $.ajax({ 2 type: "post", 3 data: { "flag": "SalesCar", "phone": $("#txtregphone").val() }, 4 dataType: "text", 5 url: "/Car/ToUserCode", 6 success: function (data) { 7 var result = data.split('^'); 8 if (result.length > 0) { 9 if (data.indexOf("激活码发送成功!") >= 0) { 10 time();//验证码倒计时 11 $("#hdphonecode").val(result[1]); 12 alert(result[0]);//发送成功提示语 13 } else { 14 alert(data);//失败 15 } 16 } else { 17 alert(data);//失败 18 } 19 } 20 })
验证验证码:
1 $.ajax({ 2 type: "post", 3 data: { "pccode": $("#txtphonecode").val(), "phone": $("#txtregphone").val() }, 4 dataType: "text", 5 url: "/Car/SetUserCode", 6 success: function (data) { 7 if (data.indexOf("验证成功!") >= 0) { 8 //用类似这个ajax提交验证后业务(比如注册等) 9 //这里直接你写的调用函数 10 } else { 11 alert(data);//失败 12 } 13 } 14 })
验证码,不用存库,又不得复用还有有效时间,Session即可。
是存储session中吗
@IT丶逝去的青春: 恩。right
@Supper_litt: 但是如果用户用139手机号获取到验证码,之后刷新页面,填写185的手机号,输入那个验证码,这个漏洞如何处理呢?
@IT丶逝去的青春: 你说的这个是说的这个是手机验证码,这个验证码内容和手机号肯定是存数据库的,并且,还要设置失败尝试次数,就是说短信被尝试多少次失效。
我还以为你说的图文验证码哦。
我就是放库里.直接放进去就是了. 弄一个短信发送记录.验证的时候就取手机号 最后一个短信.
短信验证码的表
手机号码,验证码,生成时间
如果用户在没收到验证码,点击重发的时候,直接发送这个验证码
验证码应当有时效限制,比如5分钟失效
这个验证码存在哪里都行,但是必须要和用户名关联上
缓存就好了 存啥库啊