• 1.2手机短信验证码


    再写代码前我们应该首先有个基本思路

      1、接收参数(用户填写的手机号,图形验证码以及uuid

      2、校验参数

        2.1三个参数是否有空值的情况

        2.2校验手机号是否为正常的手机号(这里用正则来校验

        2.3校验图形验证码

          利用uuid中redis中获取文字版的图形验证码

          将服务器中的验证码和用户填写的进行对比

      3、发送手机验证码

      4、将手机验证码存放到redis中

      5、返回结果

    以下是代码的实现

     1 def sms_code():
     2     # 1.接受参数(手机号,用户填写的图形验证码,UUID)
     3     res = request.data
     4     res_dict =json.loads(res)
     5     mobile = res_dict.get('mobile')
     6     image_code = res_dict.get('image_code')
     7     image_code_id = res_dict.get('image_code_id')
     8     # 2.检验参数
     9         # 2.1三个三叔是否有空之的情况
    10     if not all([mobile,image_code,image_code_id]):
    11         return jsonify(error=RET.PARAMERR,errmsg="缺失参数")
    12         # 2.2检验手机号是否是正常的手机号(正则
    13     if not re.match("^1[37895][0-9]{9}$",mobile):
    14         return jsonify(error=RET.PARAMERR, errmsg="非法手机号")
    15         # 2.3校验图形验证码
    16         # 利用UUID从redis中获取文字版图形验证码
    17     try:
    18         image_code_server = redis_store.get("image_code:"+image_code_id)
    19     except Exception as e:
    20         current_app.logger.error(e)
    21         return jsonify(error=RET.DATAERR, errmsg="图形验证码查询失败")
    22     #如果image_code_server没有的话返回一个json数据
    23     if not image_code_server:
    24         return jsonify(error=RET.NODATA, errmsg="未查询到验证码bro")
    25         # 将服务器存储的验证码和用户的验证码进行对比
    26     if image_code_server.lower() != image_code.lower():
    27         return jsonify(error=RET.PARAMERR, errmsg="验证码输入错误")
    28     # 3.发送手机验证码
    29     sms_code = "%04d"% random.randint(0,9999)
    30     print(sms_code)
    31     # sms_res = CCP().send_template_sms(mobile,[sms_code,5],1)
    32     sms_res = 0
    33     if sms_res != 0:
    34         return jsonify(error=RET.THIRDERR, errmsg="短信发送失败")
    35     # 4.将手机验证码存放到redis中
    36     try:
    37         #生成uuid放进redis数据库中
    38         redis_store.set('sms_code:' + mobile, sms_code, constants.SMS_CODE_REDIS_EXPIRES)
    39     except Exception as e:
    40         current_app.logger.error(e)
    41         return jsonify(error=RET.DATAERR, errmsg="保存失败")
    42     # 5.返回结果
    43     return jsonify(error=RET.OK, errmsg="发送成功")
    44     return jsonify()

    其中返回的jsonify(error=RET.,errmsg="")中的RET我们调用的是第三方的包responsee_code.py中的类

    用来判断相对应的错误类型以及返回给用户的错误信息

    最后还有一点就是第28行中的发送短信我们用的是第三方平台云通讯来发送的..但是吧..这里我们方便一点就用random随机数随便生成一个了

    云通讯我会单独用个博客来介绍的

    接下来就是js的代码

     1 function sendSMSCode() {
     2     // 校验参数,保证输入框有数据填写
     3     $(".get_code").removeAttr("onclick");
     4     var mobile = $("#register_mobile").val();
     5     if (!mobile) {
     6         $("#register-mobile-err").html("请填写正确的手机号!");
     7         $("#register-mobile-err").show();
     8         $(".get_code").attr("onclick", "sendSMSCode();");
     9         return;
    10     }
    11     var imageCode = $("#imagecode").val();
    12     if (!imageCode) {
    13         $("#image-code-err").html("请填写验证码!");
    14         $("#image-code-err").show();
    15         $(".get_code").attr("onclick", "sendSMSCode();");
    16         return;
    17     }
    18 
    19     // TODO 发送短信验证码
    20     var params = {
    21         'mobile':mobile,
    22         'image_code':imageCode,
    23         'image_code_id':imageCodeId
    24     }
    25      // TODO 发送短信验证码
    26     $.ajax({
    27         url:'/passport/sms_code',   // 请求地址
    28         type:'post',                // 请求方法
    29         data:JSON.stringify(params),// 请求参数
    30         contentType:'application/json',// 数据类型
    31         success:function (response) {  // 回调函数
    32             if (response.errno == '0') {
    33                 // 发送短信验证码成功
    34                 alert(response.errmsg);
    35             } else {
    36                 alert(response.errmsg);
    37             }
    38         }
    39     });
    40 }
  • 相关阅读:
    JavaScript-Runoob:JavaScript 对象
    JavaScript-Runoob:JavaScript 数据类型
    JavaScript-Runoob:JavaScript 变量
    JavaScript-Runoob:JavaScript 注释
    JavaScript-Runoob:JavaScript 语句
    从word中复制内容包含图片到tinymce编辑器中
    从word中复制内容包含图片到xheditor编辑器中
    从word中复制内容包含图片到kindeditor编辑器中
    从word中复制内容包含图片到ckeditor编辑器中
    从word中复制内容包含图片到fckeditor编辑器中
  • 原文地址:https://www.cnblogs.com/Hdwmsyqdm/p/13880356.html
Copyright © 2020-2023  润新知