前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端|利用手机号登录获取手机验证码

前端|利用手机号登录获取手机验证码

作者头像
算法与编程之美
发布2020-08-03 18:44:55
9.5K0
发布2020-08-03 18:44:55
举报

问题描述

手机号直接登录账号的优势:

利用手机号直接登录账号在现有的app、微信小程序以及各大网址上都比较常见。利用手机号直接登录账号它省略的用户密码这一环节,直接采用验证码的形式进行用户身份验证,在一定程度上解决了因为用户个人原因造成的密码遗忘、丢失等情况,且对于用户个人的身份信息验证更为严格,更有利于保护用户账号安全。此外,利用手机号直接登录账号还可以满足产品的特殊需求。比如一些公司企业会事先给一些客户创建账号。这些客户来到平台时,直接输入验证码就可以进入使用了,而不需要补充密码,方便了用户登录。

解决方案

本次的实现效果如下图2.1:

图2.1 实现效果

从图2.1的效果中,我们可以看出。我们至少需要对是否输入的是有效的手机号,输入的验证码正确与否进行验证。

实现步骤:①创建相应的文件,并在HTML5中引入;②利用HTML5代码对页面框架进行搭建;③利用css对样式进行调整;④利用JavaScript对验证码进行初始化;⑤判断是否输入的是有效的手机号;⑥判断输入的验证码是否正确;

(因为要获取验证码,需要用到度授权使用百度地图Web组件API,所以部分效果不完善)

实现过程:

(1)利用HTML5代码对页面框架进行搭建:

代码语言:javascript
复制
       <div>

              <div>

                     <div>

                            <p>

                                   <span>手机号:</span>

                                   <input  type="tel" id="mobile" onkeyup="value=value.replace(/[^\w\.\/]/ig,&#39;&#39;)"  required="" placeholder="请输入您的手机号">

                            </p>

                            <p>

                                   <span>验证码:</span>

                                   <input  type="tel" placeholder="输入验证码">

                                   <span>获取验证码</span>

                            </p>

                            <div  class="demand demand2" style="width: 70%; margin-top: 20px;">登录</div>

                     </div>

                     <div>

                            <p>登录成功</p>                      

                            <div  class="demand demand3" style="width: 80%; margin-top: 20px; margin-bottom:  10px;">知道了</div>

                     </div>                

              </div>

       </div>

       <div  class="demand demand1" style="bgcolor: dodgerblue;">手机号快捷登录</div>

(2)样式设置,根据效果对样式进行调整(代码省略)

(3)校验手机号

代码语言:javascript
复制
//校验手机号

       jQuery.extend({

           checkmobileNo: function(str) {

               var re =/^1[3|7|5|8]\d{9}$/;

               if (re.test(str)) {

                   return true;

               } else {

                   return false;

               }

           }

       });

(4)审核验证码。注意:发送的验证码:API+/手机号,审核时验证码应该是:API+/六位数字验证码/手机号

代码语言:javascript
复制
//当点击发送验证码的时候

       $('.code1').click(function(){

              //验证手机号合法

              var  mobile = $("#mobile").val();

              if  (!$.checkmobileNo(mobile)) {

            alert("手机号无效");

            return false;

         }

              //发送验证码给手机

         $.ajax({

            type: 'GET',

            url:"API" + mobile,

            success: function(data, status) {

                if (data.errcode==0) {

                                   alert("已发送");

//                                $(".code1").attr("disabled",  "disabled");

                     $(".code1").css("background-color",  "#b4b2b3");

                    var d = new Date();

                     d.setSeconds(d.getSeconds() + 59);

                    var m = d.getMonth() + 1;

                    var time =  d.getFullYear() + '-' + m + '-' + d.getDate() + ' ' + d.getHours() + ':' +  d.getMinutes() + ':' + d.getSeconds();

 

                    var id =  ".code1";

                    var end_time = new  Date(Date.parse(time.replace(/-/g, "/"))).getTime(),

                    //月份是实际月份-1

                    sys_second = (end_time -  new Date().getTime()) / 1000;

                    var timer =  setInterval(function() {

                          if (sys_second > 1) {

                                 sys_second -= 1;

                                  var day = Math.floor((sys_second  / 3600) / 24);

                            var hour =  Math.floor((sys_second / 3600) % 24);

                            var minute =  Math.floor((sys_second / 60) % 60);

                            var second = Math.floor(sys_second  % 60);

                            var time_text =  '';

                            if (day > 0) {

                                  time_text += day + '天';

                            }

                            if (hour > 0)  {

                                   if (hour < 10) {

                                         hour = '0' + hour;

                                  }

                                  time_text += hour + '小时';

                            }

                            if (minute >  0) {

                                   if (minute < 10) {

                                         minute = '0' + minute;

                                  }

                                  time_text += minute + '分';

                            }

                            if (second >  0) {

                                if (second  < 10) {

                                    second =  '0' + second;

                                }

                                time_text +=  second + '秒';

                            }

                            $(id).text(time_text);

                          } else {

                                 clearInterval(timer);

                             $(".code1").attr("disabled", false);

                             $(".code1").text('获取验证码');

                            $(".code1").css("background-color",  "#f67a62");

                        }

                    },

                    1000);                        

                }else{

                      alert("发送失败,请再试一次。");

                }

            },

            error: function(data, status) {

                alert(status);

            }

         });    });

//点击提交按钮时

$('.demand2').click(function(){

              var  mobile = $("#mobile").val();

              var  num = $(".code").val();

              //验证手机号可验证码

              if  (mobile == "") {

            alert('请输入手机号');

            return false;

         }

         if (!$.checkmobileNo(mobile)) {

            alert('手机号错误!');

            return false;

         }

         if (num == '') {

            alert('请输入验证码');

            return false;

         }

         //验证验证码和手机发送的验证码是否一致

         $.ajax({

            type: 'GET',

            url:  "API"+num+"/"+mobile,

            success: function(data, status) {

                if (data.errcode==0) {

                                   //向服务器提交信息

                                   $.ajax({

                              type: 'POST',

                              url: "API",

                              data: JSON.stringify({

                                  "project_id":  pid,

                                  "phone":  mobile,

                                  "device":d

                              }),

                              success: function(data,  status) {

                                  if (data.errcode==0) {

                                                        $('.page1').hide();

                                                        $('.page2').show();

                                  }else{

                                        alert("提交失败,请在尝试一次!");

                                  }

                              },

                              error: function(data, status)  {

                                  alert(data.errMsg);

                              }

                          });

                }else{

                      alert("验证码不正确!");

                }

            },

            error: function(data, status) {

                alert(status);

            }        });

END

实习主编 | 王楠岚

责 编 | 刘 连

where2go 团队


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档