首页 新闻 会员 周边

注册时验证码如何存库?求大神详解;

0
悬赏园豆:140 [已解决问题] 解决于 2016-05-16 18:27

我是新手,到这就让我做这个。。我目前的思路是这样,离焦调ajax验证用户,点击获取验证码的时候调ajax调用发短信的接口和根据手机号(用户名)生成一个空表获取到userid,用户都填完整后点击下一步form提交,后台根据userid 来update用户表,进行新用户注册,但这样问题是 用户点击获取验证码而不提交的时候就再user表中生成了一条username的数据,等用户在刷新页面重新填写的时候,就已经存在了,哪位大神给个“详细”的思路,真心感谢。

问题补充:

IT丶逝去的青春的主页 IT丶逝去的青春 | 初学一级 | 园豆:33
提问于:2016-04-29 10:06
< >
分享
最佳答案
1

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             })
View Code

验证验证码:

 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             })                    
View Code

 

收获园豆:140
无影飞絮剑 | 小虾三级 |园豆:1155 | 2016-04-29 10:36
其他回答(5)
0

验证码,不用存库,又不得复用还有有效时间,Session即可。

Supper_litt | 园豆:827 (小虾三级) | 2016-04-29 10:06

是存储session中吗

支持(0) 反对(0) IT丶逝去的青春 | 园豆:33 (初学一级) | 2016-04-29 10:08

@IT丶逝去的青春: 恩。right

支持(0) 反对(0) Supper_litt | 园豆:827 (小虾三级) | 2016-04-29 10:09

@Supper_litt: 但是如果用户用139手机号获取到验证码,之后刷新页面,填写185的手机号,输入那个验证码,这个漏洞如何处理呢?

支持(0) 反对(0) IT丶逝去的青春 | 园豆:33 (初学一级) | 2016-04-29 10:14

@IT丶逝去的青春: 你说的这个是说的这个是手机验证码,这个验证码内容和手机号肯定是存数据库的,并且,还要设置失败尝试次数,就是说短信被尝试多少次失效。

我还以为你说的图文验证码哦。

支持(0) 反对(0) Supper_litt | 园豆:827 (小虾三级) | 2016-04-29 10:37
0

我就是放库里.直接放进去就是了. 弄一个短信发送记录.验证的时候就取手机号 最后一个短信.

吴瑞祥 | 园豆:29449 (高人七级) | 2016-04-29 10:13
0

短信验证码的表

手机号码,验证码,生成时间

如果用户在没收到验证码,点击重发的时候,直接发送这个验证码

验证码应当有时效限制,比如5分钟失效

 

Rich.T | 园豆:3440 (老鸟四级) | 2016-04-29 10:23
1

这个验证码存在哪里都行,但是必须要和用户名关联上

刘宏玺 | 园豆:14020 (专家六级) | 2016-04-29 10:45
1

缓存就好了 存啥库啊

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2016-04-29 18:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册