精华内容
下载资源
问答
  • 发送短信验证码

    2017-04-17 18:06:16
    tp5中发送短信验证码没有集成到vendor的目录下,当时我用的开发环境中没有vendor目录就在我们自己的项目下自己创建了一个common文件云之讯验证码 在项目中创建一个common文件 将云之讯中的UCpass.php文件放在common...

    tp5中发送短信验证码没有集成到vendor的目录下,当时我用的开发环境中没有vendor目录就在我们自己的项目下自己创建了一个common文件

    云之讯验证码

    1. 在项目中创建一个common文件
    2. 将云之讯中的UCpass.php文件放在common中
    3. 在要用的地方在调用

    榕联验证码

    1. 在项目中创建一个common文件
    2. 将云之讯中的CCPRestSmsSDK.php文件放在common中
    3. 在要用的地方在调用
    展开全文
  • 存在的问题: 虽然我们在前端界面做了60秒倒...避免频繁发送短信验证码逻辑分析 避免频繁发送短信验证码逻辑实现 提取、校验send_flag send_flag = redis_conn.get('send_flag_%s' % mobile) if send_flag: return

    存在的问题:

    • 虽然我们在前端界面做了60秒倒计时功能。
    • 但是恶意用户可以绕过前端界面向后端频繁请求短信验证码。

    解决办法:

    • 在后端也要限制用户请求短信验证码的频率。60秒内只允许一次请求短信验证码。
    • 在Redis数据库中缓存一个数值,有效期设置为60秒。
    避免频繁发送短信验证码逻辑分析

    在这里插入图片描述

    避免频繁发送短信验证码逻辑实现

    提取、校验send_flag

    send_flag = redis_conn.get('send_flag_%s' % mobile)
    if send_flag:
        return http.JsonResponse({'code': RETCODE.THROTTLINGERR, 'errmsg': '发送短信过于频繁'})
    

    重新写入send_flag

    # 保存短信验证码
    redis_conn.setex('sms_%s' % mobile, constants.SMS_CODE_REDIS_EXPIRES, sms_code)
    # 重新写入send_flag
    redis_conn.setex('send_flag_%s' % mobile, constants.SEND_SMS_CODE_INTERVAL, 1)
    

    界面渲染频繁发送短信提示信息

    if (response.data.code == '4001') {
        this.error_image_code_message = response.data.errmsg;
        this.error_image_code = true;
    } else { // 4002
        this.error_sms_code_message = response.data.errmsg;
        this.error_sms_code = true;
    }
    
    展开全文
  • C#发送短信验证码

    2019-04-18 17:41:42
    C#发送短信验证码,通过阿里云短信接口发送短信.
  • jQuery发送短信验证码

    2021-06-01 19:40:43
    发送短信验证码,倒计时计算
  • 主要为大家详细介绍了java实现发送短信验证码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 我们在注册账号,或者是参加活动时,都会向手机发送收短信验证码,短信验证码到底是如何实现的,本文为大家揭晓,并为大家分项1javascript发送短信验证码实现代码,感兴趣的小伙伴们可以参考一下
  • 基于云通讯平台的短信验证码, 开发者在开发时注册登录系统时,用于测试发送短信验证码
  • 主要介绍了Java使用云片API发送短信验证码,主要用的是Java实现短信验证码。需要的朋友可以参考下
  • 主要介绍了微信小程序发送短信验证码完整实例,实现发送短信验证码,带60秒倒计时功能,无需服务器端,非常具有实用价值,需要的朋友可以参考下
  • 主要为大家详细介绍了Java实现发送短信验证码功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了php发送短信验证码完成注册功能的详细步骤,感兴趣的小伙伴们可以参考一下
  • Java发送短信验证码

    2019-04-13 13:14:00
    使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求,调用短信平台提供的接口(遵循短信平台的接口规范即可)发送短信验证码!亲测可用!给出例子,欢迎下载!
  • 主要介绍了Python3实现发送邮件和发送短信验证码功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 此资源主要是vue实现通过发送短信验证码进行登录,其中的密钥需要自己去sms平台进行申请.
  • 主要介绍了JS 实现发送短信验证码的“59秒后重新发送验证短信”功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 主要介绍了Android用 Mob 实现发送短信验证码实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 使用阿里云短信验证码API发送短信验证码使用此短信验证码可以进行注册、登录、密码重置等功能。相关的Java代码 使用此短信验证码可以进行注册、登录、密码重置等功能。 相关的Java代码 代码中我已经进行了详细的注释...

    获取阿里云短信验证码需要的配置信息。

    如果是新用户,可以免费领取3个月,老用户的话就只能购买了,但是也不贵。

    申请短信签名
    申请短信签名
    申请短信模板
    申请短信模板

    编写发送短信验证码的工具类

    代码中我已经进行了详细的注释,也写了一个生成6位随机数字的方法.

    如果有什么疑问,欢迎在评论里留言。

    package com.imlee.examsys.utils;
    
    import com.aliyuncs.CommonRequest;
    import com.aliyuncs.CommonResponse;
    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.IAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.exceptions.ServerException;
    import com.aliyuncs.http.MethodType;
    import com.aliyuncs.profile.DefaultProfile;
    
    /**
     * @Author imlee
     * @Date 2019-08-31 14:49
     *
     * 调用阿里云短信验证码 API
     * 进行手机号码的验证
     */
    
    public class SendSms {
    
        //  自己账号的 accessKeyId
        private static final String accessKeyId = "";
        //  自己账号的 accessKeySecret
        private static final String accessKeySecret = "";
        //  自己账号的   短信签名名称
        private static final String signName = "";
        //  自己账号的   短信模板ID
        private static final String templateCode = "";
    
        /**
         *         发送短信验证码
         *
          * @param telephoneNumber  用户填写的手机号码
         * @return validateCode     该用户此次操作的短信验证码
         */
        public static String sendMessage(String telephoneNumber) {
    
            //  随机生成 6位 验证码
            String validateCode = String.valueOf((int)((Math.random() * 9 + 1) * 100000));
    
            DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
            IAcsClient client = new DefaultAcsClient(profile);
    
            CommonRequest request = new CommonRequest();
            //  请求方式  POST(默认)
            request.setMethod(MethodType.POST);
            //  阿里云短信服务器(默认)
            request.setDomain("dysmsapi.aliyuncs.com");
            //  版本号(默认)
            request.setVersion("2017-05-25");
            //  执行动作  发送短信 (默认)
            request.setAction("SendSms");
            request.putQueryParameter("RegionId", "cn-hangzhou");
            request.putQueryParameter("PhoneNumbers", telephoneNumber);
            request.putQueryParameter("SignName", signName);
            request.putQueryParameter("TemplateCode", templateCode);
            request.putQueryParameter("TemplateParam", "{\"code\":" + validateCode + "}");
    
            try {
                CommonResponse response = client.getCommonResponse(request);
    
                System.out.println(response.getData());
    
            } catch (ServerException e) {
                e.printStackTrace();
                return "抱歉,您的当前获取次数已达上限,请于下一个时段或明天再试!";
            } catch (ClientException e) {
                e.printStackTrace();
                return "系统异常,请重新获取!";
            }
    
            return validateCode;
        }
    
    }
    
    
    

    之前写的项目,和验证码相关的一些操作,将短信验证码保存到了redis中,使用它进行注册、登录、重置密码等操作。这个连载的代码都是自己写的,提供给需要的同学参考,如果有什么想要交流的,欢迎留言。

    此处进行获取短信验证码的操作。

    
    import com.imlee.examsys.pojo.JsonResult;
    import com.imlee.examsys.pojo.User;
    import com.imlee.examsys.service.UserService;
    import com.imlee.examsys.utils.SendSms;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.web.bind.annotation.CrossOrigin;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.concurrent.TimeUnit;
    
    /**
     *      和验证码相关的后台接口
     *
     * @Author imlee
     * @Date 2019-09-02 10:10
     */
    @CrossOrigin
    @RestController
    public class ValidateController {
    
        //  注入 Redis
        @Autowired
        private StringRedisTemplate redisTemplate;
    
        @Autowired
        private UserService userService;
    
        /**
         *                      获取短信验证码
         *
         * @Author  imlee
         *
         * @param telephoneNumber   用户填写的手机号码
         * @return                  验证码发送成功的提示
         */
        @RequestMapping("/getCode.do")
        public JsonResult getCode(String telephoneNumber) {
    
            //  判断是否填写手机号码
            if (telephoneNumber == null) {
                //  未填写手机号码,返回失败提示
                return new JsonResult(0, "请输入手机号码!");
            }
    
            //  判断用户填写的手机号码是否合法
            if (!telephoneNumber.matches("^1(([358]\\d)|66|76|77|99)\\d{8}$")) {
                //  手机号码不合法,返回失败提示
                return new JsonResult(0, "手机号码不合法,请重新输入!");
            }
    
            //    将用的短信验证码保存到Redis中
            String validateCode = SendSms.sendMessage(telephoneNumber);
    
            //  判断获取短信验证码是否出现异常
            if (validateCode.length() != 6) {
                //  说明返回的不是验证码,而是异常信息
                return new JsonResult(0, validateCode);
            }
    
            //  将短信验证码保存到 Redis 中,有效期为5分钟
            //  key  : 手机号码
            //  value: 验证码
            redisTemplate.opsForValue().set(telephoneNumber, validateCode);
            redisTemplate.expire(telephoneNumber, 300, TimeUnit.SECONDS);
    
            return new JsonResult(1, "发送成功,请查收!");
        }
    /**
    *					接下来的代码是写在这里的
    **/
    }
    

    下面的代码都是写在上面这个里面的,代码最后有注释。

    这里是在注册时填写用户名后实时验证是否可用

    这个代码是在用户在输入框中填写用户名后,异步请求后台进行查询,用户名是否可用。这个项目进行了跨域处理,在上面已经添加了@CrossOrigin注解了。

    
        /**
         *          注册账号时,在用户输入用户名之后,输入框失去焦点后立即查询数据库中是否存在此用户名
         *
         * @Author imlee
         * @param username
         * @return      返回查询结果、提示信息
         */
        @RequestMapping("/checkName.do")
        public JsonResult checkName(String username) {
    
            User user = userService.login(username);
            if (user == null) {
    
                if (username.matches("^[1-9a-zA-Z]{3,12}$")) {
    
                    return new JsonResult(1, "用户名可以使用!");
                } else {
    
                    return new JsonResult(0, "用户名不合法!");
                }
    
            }
    
            return new JsonResult(0, "用户名已存在!");
        }
    

    使用短信验证码进行用户注册

    我的理解是,在使用手机号码进行注册的时候,先使用手机号码进行“预注册”,判断手机号码是否已经注册,以及用户填写的短信验证码是否可用。

    
        /**
         *          注册账号第一步:使用手机号码进行预注册
         *
         * @Author  imlee
         *
         * @param telephoneNumber   用户填写的电话号码
         * @param telephoneCode     短信验证码
         * @return
         */
        @RequestMapping("/signUpFirst.do")
        public JsonResult signUp(String telephoneNumber, String telephoneCode) {
    
            User user = userService.signInByTelephoneNumber(telephoneNumber);
            if (user != null) {
                return new JsonResult(0, "此号码已注册,请直接登录!");
            }
    
            //  按照 手机号码 + 短信验证码 注册
            //      获取 保存在 redis 中的短信验证码
            String code = redisTemplate.opsForValue().get(telephoneNumber);
    
            //  判断短信验证码是否过期
            if (code == null || code.equals("")) {
                return new JsonResult(0, "验证码已过期,请重新获取!");
            } else {
                //  验证 用户输入的验证码和redis中保存的验证码是否一致
                if (telephoneCode.equals(code)) {
    
                    //  验证码正确,执行注册逻辑
                    int i = userService.signUpFirst(telephoneNumber);
    
                    if (i != 1) {
                        //  返回受影响行数,不为1,即注册失败
                        return new JsonResult(0, "注册失败!");
                    }
    
                } else {
                    //  验证码错误,返回提示
                    return new JsonResult(0, "验证码输入有误,请重新输入!");
                }
            }
    
            return new JsonResult(1, telephoneNumber);
        }
    

    进行注册的信息填写,这里我在代码里写的验证码是图片验证码,前面第一步的验证码才是短信验证码。因为我的注册是两步完成的,填写手机号码和短信验证码后跳转到填写注册信息的页面。也就是说第一步的时候只是在数据库中写入一个手机号码,没有其它的信息,在第二个页面中补充完整。

        /**
         *          注册账号第二步:设置用户名和密码
         *
         * @Author  imlee
         * @param username          用户填写的用户名
         * @param password          用户填写的密码
         * @param telephoneNumber   用户填写的电话号码
         * @param validate          用户填写的验证码
         * @return
         */
        @RequestMapping("/signUp.do")
        public JsonResult signUp(String username, String password, String telephoneNumber, String validate) {
    
            //  获取 redis 中保存的验证码文字
            String codeStr = redisTemplate.opsForValue().get("codeStr");
    
            //  首先验证 验证码(忽略大小写)
            if (validate.equalsIgnoreCase(codeStr)) {
    
                //  执行注册逻辑
                //  先查询用户名是否存在
                User user = userService.login(username);
    
                //  判断用户名是否存在
                if (user != null) {
                    //  用户名已存在
                    return new JsonResult(0, "此用户名已存在,请使用其它用户名!");
                } else {
                    //  用户名不存在,进行注册
                    int i = userService.signUp(username, password, telephoneNumber);
    
                    if (i != 1) {
                        //  返回受影响行数,不为1,即注册失败
                        return new JsonResult(0, "注册失败!");
                    }
                }
            } else {
    
                //  验证码错误,返回提示
                return new JsonResult(0, "验证码输入有误,请重新输入!");
            }
    
            return new JsonResult(1, "注册成功!");
        }
    

    短信验证码登录

    我将短信验证码登录和用户名、密码登录,写在了一起。

    
        /**
         *      登录方法    1.使用账号 + 密码 + 文字验证码登录
         *                 2.使用手机号码 + 短信验证码登录
         *
         * @Author  imlee
         *
         * @param username          用户名
         * @param password          密码
         * @param validate          验证码
         * @param telephoneNumber   手机号码
         * @param telephoneCode     短信验证码
         * @return                  供前台使用的 Json 数据
         */
        @RequestMapping("/signIn.do")
        public JsonResult signIn(String username, String password, String validate, String telephoneNumber, String telephoneCode) {
    
            //  验证码非空或者不是null,说明使用的是账号 + 密码 + 验证码
            //      反之,说明使用的是,手机号码 + 短信验证码
    
            User user = null;
    
            if (validate != null && !validate.equals("")) {
    
                //  获取 redis 中保存的验证码文字
                String codeStr = redisTemplate.opsForValue().get("codeStr");
    
                //  首先验证 验证码(忽略大小写)
                //      验证码正确,再验证,账号、密码
                if (validate.equalsIgnoreCase(codeStr)) {
    
                    //  执行登录逻辑
                    user = userService.login(username);
    
                    //  判断用户名是否存在
                    if (user == null) {
                        return new JsonResult(0, "此用户名不存在,请核对后重新登录!");
                    } else {
    
                        //  比对用户输入的密码和数据库中是否一致
                        if (!password.equals(user.getPassword())) {
                            return new JsonResult(0, "密码错误,请核对密码或用户名是否输入有误!");
                        }
                    }
                } else {
    
                    //  验证码错误,返回提示
                    return new JsonResult(0, "验证码输入有误,请重新输入!");
                }
            } else {
    
                //  按照 手机号码 + 短信验证码 的逻辑登录
                //      获取 保存在 redis 中的短信验证码
                String code = redisTemplate.opsForValue().get(telephoneNumber);
    
                //  判断短信验证码是否过期
                if (code == null || code.equals("")) {
                    return new JsonResult(0, "验证码已过期,请重新获取!");
                }
    
                //  验证 用户输入的验证码和redis中保存的验证码是否一致
                if (telephoneCode.equals(code)) {
    
                    //  验证码正确,执行登录逻辑
                    user = userService.signInByTelephoneNumber(telephoneNumber);
    
                    if (user == null) {
                        return new JsonResult(0, "此号码未注册账号,如需注册请移步注册页面(验证码有效期5分钟)!");
                    }
    
                } else {
                    //  验证码错误,返回提示
                    return new JsonResult(0, "验证码输入有误,请重新输入!");
                }
            }
    
            //  登录成功,返回 user 对象
            return new JsonResult(1, user);
        }
    

    短信验证码重置密码

    就不多介绍了,直接上代码了,全手工打造。这个连载到此就暂时结束了。欢迎留言交流!

    
        /**
         *          重置密码:第一步,查询手机号码是否存在
         *
         * @Author  imlee
         * @param telephoneNumber   手机号码
         * @param telephoneCode     短信验证码
         * @return
         */
        @RequestMapping("/resetPasswordFirst.do")
        public JsonResult resetPasswordFirst(String telephoneNumber, String telephoneCode) {
    
    
            User user = userService.signInByTelephoneNumber(telephoneNumber);
            if (user == null) {
                return new JsonResult(0, "此号码未注册,请核对是否输入有误!");
            }
    
            //  按照 手机号码 + 短信验证码 重置密码
            //      获取 保存在 redis 中的短信验证码
            String code = redisTemplate.opsForValue().get(telephoneNumber);
    
            //  判断短信验证码是否过期
            if (code == null || code.equals("")) {
    
                return new JsonResult(0, "验证码已过期,请重新获取!");
    
            } else {
                //  验证 用户输入的验证码和redis中保存的验证码是否一致
                if (!telephoneCode.equals(code)) {
                    return new JsonResult(0, "验证码输入有误,请重新输入!");
                }
            }
    
            return new JsonResult(1, telephoneNumber);
        }
    
        /**
         *          重置密码:第二步,修改密码
         *
         * @Author imlee
         * @param password          新密码
         * @param validate          验证码
         * @param telephoneNumber   手机号码
         * @return
         */
        @RequestMapping("/resetPassword.do")
        public JsonResult resetPassword(String password, String validate, String telephoneNumber) {
    
            //  获取 redis 中保存的验证码文字
            String codeStr = redisTemplate.opsForValue().get("codeStr");
    
            //  首先验证 验证码(忽略大小写)
            if (validate.equalsIgnoreCase(codeStr)) {
    
                //  执行重置密码逻辑
                int i = userService.resetPassword(password, telephoneNumber);
    
                if (i != 1) {
                    return new JsonResult(0, "重置失败!");
                }
    
            } else {
                //  验证码错误,返回提示
                return new JsonResult(0, "验证码输入有误,请重新输入!");
            }
    
            return new JsonResult(1, "重置成功!");
        }
    
    
    展开全文
  • java实现发送短信验证码功能

    千次下载 热门讨论 2015-04-17 19:44:36
    使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口(遵循短信平台的接口规范即可)发送短信验证码
  • 阿里云发送短信验证码功能,更改密钥,签名后可直接使用
  • 主要介绍了SpringBoot+Security 发送短信验证码的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • java中调用API实现发送短信验证码
  • 主要介绍了vue 实现通过手机发送短信验证码注册功能的相关资料,需要的朋友可以参考下
  • Android发送短信验证码

    千次阅读 2015-10-31 22:39:38
    Android发送短信验证码

           在发送验证码中,后台我们使用的是Mob平台

           首先注册成为Mob平台用户,进入后台,创建短信验证码应用,如下图。



           创建好应用后,记录App Key值和App Secret值,在初始化SDK时使用。



           下载相应的SDK,解压后的文件目录如下,将SMSSDK导入ADT中,设为库文件(选择工程右击选择“property”->"Android"选项下的library勾选“Is Library”)。



           创建新工程,在工程中引入SMSSDK库(选择工程右击选择“property”->"Android"选项下的library中, 点击右边的“add...", 在出现的下拉列表中选择要引入的library即可)。


           配置AndroidManifest.xml文件,添加如下权限:

    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

          在application标签下添加如下activity:

    <span style="font-size:14px;"><activity
    android:name="com.mob.tools.MobUIShell"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:windowSoftInputMode="stateHidden|adjustResize"/></span>

          在工程中初始化SMSSDK并调用发送验证码,完成后的MainActivity.java与acticity_main.xml如下:

    MainActivity.java:

    package xyz.baal.testsms;
    
    import java.util.HashMap;
    import java.util.Random;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import cn.smssdk.EventHandler;
    import xyz.baal.testsms.R;
    import cn.smssdk.SMSSDK;
    import cn.smssdk.gui.RegisterPage;
    
    public class MainActivity extends Activity {
    	private Button bt;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		//初始化SMSSDK
    		SMSSDK.initSDK(this, "<您的appkey>", "<您的appsecret>");
    		bt = (Button) findViewById(R.id.button);
    		bt.setOnClickListener(new OnClickListener() {
    			public void onClick(View arg0) {				
    				/*
    				 *打开注册页面 
    				 *短信SDK内置了开源的GUI功能,您可以通过调用下面的代码打开短信验证页面
    				 */
    				RegisterPage registerPage = new RegisterPage();
    				registerPage.setRegisterCallback(new EventHandler() {
    					public void afterEvent(int event, int result, Object data) {
    						// 解析注册结果
    						if (result == SMSSDK.RESULT_COMPLETE) {
    							//获取数据
    							HashMap<String,Object> phoneMap = (HashMap<String, Object>) data;
    							String country = (String) phoneMap.get("country");
    							String phone = (String) phoneMap.get("phone"); 	
    							// 提交用户信息
    							registerUser(country, phone);
    						}
    					}
    				});
    				registerPage.show(MainActivity.this);
    			}
    		});
    	}
    	
    	public void registerUser(String country,String phone){
    		Random random = new Random();
    		String uidString = Math.abs(random.nextInt())+"";
    		String nickName = "BAAL";
    		SMSSDK.submitUserInfo(uidString, nickName, null, country, phone);
    	}
    }
    
    
    acticity_main.xml:
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
    
        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:text="短信测试" />
    </RelativeLayout>
    
    


    展开全文
  • 发送短信验证码+登陆功能

    万次阅读 多人点赞 2017-12-14 19:39:55
    业务:  手机端点击发送验证码,调用第三方平台(我们用的是“任信了”平台)的接口...  过程:     代码: ... * 发送短信验证码 * @param json 前台传入电话号码 * @return 返回发送结果向前台 */ @R
  • 主要介绍了jQuery实现倒计时重新发送短信验证码功能,结合实例形式分析了基于jQuery的倒计时操作功能实现方法,涉及jQuery表单提交、验证、正则操作等技巧,需要的朋友可以参考下
  • 主要介绍了通过第三方接口发送短信验证码/短信通知(推荐)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,480
精华内容 9,392
关键字:

如何发送短信验证码