精华内容
下载资源
问答
  • python123 验证码校验

    2020-12-21 21:14:33
    用户输入验证码区分大小写,只要各字符出现顺序正确即可通过验证。请写一个程序完成验证码的匹配验证,假设当前显示的验证码是’Ks3V’。 如果用户输入验证码正确,输出“验证码正确”,输入错误时输出“验证码...
  • * 验证码保存到session的格式为: array('verify_code' => '验证码值', 'verify_time' => '验证码创建时间'); * @access public * @param string $id 要生成验证码的标识 * @return void */ public ...
  • vcg(验证码控件)

    2007-06-27 10:50:04
    } //生成随机验证码串 private void Generate_control(int max_charnum, int min_charnum) {  if (4 >= min_charnum && 4 )  poem_available = true;  if (5 >= min_charnum && 5...
  • 1.生成重复的随机字符串 随机字符序列在哪里用的上呢?举个栗子,购物网站需要生成大量的验证码图片,把随机字符序列作为这些图片的名字就是一个不错的选择。出现在文件名中的字符可以包括./_|数字0-9以及大小写...

    1.生成不重复的随机字符串

    随机字符序列在哪里用的上呢?举个栗子,购物网站需要生成大量的验证码图片,把随机字符序列作为这些图片的名字就是一个不错的选择。出现在文件名中的字符可以包括./_|数字0-9以及大小写字符共62个不同字符,为了保证文件命名的正确性,将每个图片文件的前三个字符设置为pic,现在假设我们设定每个文件名称(不含后缀)共需13个字符(如下图所示)。根据这个格式我们可以最多给11^62张图像命名,这个数据量应该足够一般网站使用了吧。


    M1.添加一个序号

          通过随机的方法生成这个验证码序列并不难,但是有可能出现生成的随机序列相同的情况(虽然对于这个问题来说概率极小)。怎样才能避免这样的情况出现呢?最简单的方法就是在生成的字符序列指定位置插入一个递增的编号,比如需要给超过1000张图像命名,就可以将一个三位数(000-999)插入到生成的字符序列中,上述图像的名字变成了T1._154A44BFeljX.jpg。

    M2.比较的方法

          将新生成的字符序列和已用于命名的字符序列进行逐一比较,这个方法只适用于数据量比较小的情况,对于给出的例子中的情况,则会耗费掉大量的时间。


    2.生成不重复随机数字

    假设我们需要生成1000个1000以内的随机数,并将生成的随机整数一次存入到数组random_seq[1000]中。

    M1.设置标记

    我们设置一个1000维的数组bool flag[1000],所有元素都默认设置为false。当随机生成458时候,就将bool[459]设置为true,这样当下次生成一个随机数的时候我们就通过flag数组判断这个数据是否已经存在,若已经存在就丢弃重新生成一个。这个方法浪费了额外的空间,为了节省空间还可以使用一个比特序列来存储生成的状态。


    展开全文
  • 短信网关

    千次阅读 2020-05-13 18:59:17
    后台校验手机号是否合法(正则校验),合法就生成一个4位/6位的随机数字,不合法就提示前端 “手机号格式不正确”; 将手机号,随机数 存入redis缓存中,并设置过期时间; 调用短信平台接口发送验证码到用户手机上;...

    一、短信网关

    1. 用户填写手机号,发送给后台;
    2. 前台js校验手机号是否合法(正则校验),合法就生成一个4位/6位的随机数字,不合法就提示前端 “手机号格式不正确”;
    3. 将手机号,随机数 存入redis缓存中,并设置过期时间;
    4. 调用短信平台接口发送验证码到用户手机上;
    5. 用户收到短信后回填验证码,并提交form表单;
    6. 对比提交的验证码和redis存的验证码是否一致;
    7. 验证码一致则通过,不一致则提示前端。(若在redis中取不到该手机号的验证码,则证明此用户提交时间已大于过期时间);

    其它:
    在这里插入图片描述
    发送短信调用API接口失败时,会返回接口调用错误码。
    常见接口调用错误码、错误信息和解决方案,请参考下表:
    https://help.aliyun.com/document_detail/101346.html

    签名模板accessKey等申请文档
    https://help.aliyun.com/document_detail/59210.html?spm=a2c4g.11186623.6.558.1cd066fan7AK8j

    二、ShortMessageController:

    package com.reachauto.vspcloud.message.controller;
    
    
    import com.alibaba.fastjson.JSONObject;
    import com.aliyuncs.CommonResponse;
    import com.reachauto.vspcloud.common.response.Response;
    import com.reachauto.vspcloud.common.response.ResponseHelper;
    import com.reachauto.vspcloud.common.utils.StringUtils;
    import com.reachauto.vspcloud.message.bean.enu.MessageStatusEnum;
    import com.reachauto.vspcloud.message.bean.param.MessageReleaseParameter;
    import com.reachauto.vspcloud.message.service.SmsService;
    import io.swagger.annotations.*;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 短信Controller
     *
     * @author dixl
     * @date 2019-08-05 00:00
     */
    @Api(value = "API - ShortMessageController", tags = "ShortMessageController")
    @Slf4j
    @RefreshScope
    @RestController
    @RequestMapping("shortMessage")
    public class ShortMessageController {
    
    
        @Autowired
        private SmsService smsService;
    
        @Value("${message.start}")
        private int start;
    
        /**
         * 短信下发
         *
         * @param messageReleaseParameter
         * @return
         */
        @ApiOperation(value = "短信下发", notes = "短信下发")
        @ApiResponses(value = {
                @ApiResponse(code = 000000, message = "Successful — 请求已完成"),
                @ApiResponse(code = 200002, message = "短信下发失败")
        })
        @RequestMapping(value = "/messageRelease", method = RequestMethod.POST)
        public Response<Object> messageRelease(@RequestBody MessageReleaseParameter messageReleaseParameter) {
            log.info("短信传参:{}", messageReleaseParameter);
            if (StringUtils.isEmpty(messageReleaseParameter.getPhoneNum())) {
                //手机号不能为空
                return ResponseHelper.createResponse(MessageStatusEnum.MESSAGE_RELEASE_ISNULL.getCode(), MessageStatusEnum.MESSAGE_RELEASE_ISNULL.getName());
            } else if (StringUtils.isEmpty(messageReleaseParameter.getModelNum())) {
                //模板号不能为空
                return ResponseHelper.createResponse(MessageStatusEnum.MESSAGE_RELEASE_ISNULL.getCode(), MessageStatusEnum.MESSAGE_RELEASE_ISNULL.getName());
            } else if (StringUtils.isEmpty(messageReleaseParameter.getContent())) {
                //短信参数不能为空
                return ResponseHelper.createResponse(MessageStatusEnum.MESSAGE_RELEASE_ISNULL.getCode(), MessageStatusEnum.MESSAGE_RELEASE_ISNULL.getName());
            }
            if (start == 1) {
                CommonResponse response = smsService.SendSms(messageReleaseParameter);
                if (response == null) {
                    //系统异常
                    return ResponseHelper.createResponse(MessageStatusEnum.MESSAGE_RELEASE_ERROR.getCode(), MessageStatusEnum.MESSAGE_RELEASE_ERROR.getName());
                }
                JSONObject jsonObject = JSONObject.parseObject(response.getData());
                switch (StringUtils.toString(jsonObject.get("Code"), "")) {
                    case "OK":
                        //成功;
                        return ResponseHelper.createResponse(MessageStatusEnum.MESSAGE_RELEASE_SUCCESS.getCode(), MessageStatusEnum.MESSAGE_RELEASE_SUCCESS.getName());
                    case "isv.MOBILE_NUMBER_ILLEGAL":
                        //手机号异常;
                        return ResponseHelper.createResponse(MessageStatusEnum.MESSAGE_RELEASE_PHONENUM_ERROR.getCode(), StringUtils.toString(jsonObject.get("Message"), "isv.MOBILE_NUMBER_ILLEGAL"));
                    case "isv.SMS_TEMPLATE_ILLEGAL":
                        //模板异常;
                        return ResponseHelper.createResponse(MessageStatusEnum.MESSAGE_RELEASE_MODELNUM_ERROR.getCode(), StringUtils.toString(jsonObject.get("Message"), "isv.SMS_TEMPLATE_ILLEGAL"));
                    case "isv.TEMPLATE_MISSING_PARAMETERS":
                        //短信参数异常;
                        return ResponseHelper.createResponse(MessageStatusEnum.MESSAGE_RELEASE_CONTENT_ERROR.getCode(), StringUtils.toString(jsonObject.get("Message"), "isv.TEMPLATE_MISSING_PARAMETERS"));
                    default:
                        //其他异常;
                        return ResponseHelper.createResponse(MessageStatusEnum.MESSAGE_RELEASE_OTHER_ERROR.getCode(), StringUtils.toString(jsonObject.get("Message"), "短信其他异常"));
                }
            } else {
                return ResponseHelper.createResponse(MessageStatusEnum.MESSAGE_RELEASE_CLOSE.getCode(), MessageStatusEnum.MESSAGE_RELEASE_CLOSE.getName());
            }
        }
    }
    
    

    三、SmsServiceImpl:

    package com.reachauto.vspcloud.message.service.impl;
    
    import com.alibaba.fastjson.JSON;
    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;
    import com.reachauto.vspcloud.message.bean.param.MessageReleaseParameter;
    import com.reachauto.vspcloud.message.service.SmsService;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.stereotype.Component;
    
    @Slf4j
    @Component
    public class SmsServiceImpl implements SmsService {
        private static final String accessKeyId = "";
        private static final String accessKeySecret = "";
    
        @Override
        public CommonResponse SendSms(MessageReleaseParameter messageReleaseParameter) {
            DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
            IAcsClient client = new DefaultAcsClient(profile);
            CommonRequest request = new CommonRequest();
            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", messageReleaseParameter.getPhoneNum());
            //request.putQueryParameter("SignName", "HondaApp");
            request.putQueryParameter("SignName", "");
            request.putQueryParameter("TemplateCode", messageReleaseParameter.getModelNum());
            request.putQueryParameter("TemplateParam", messageReleaseParameter.getContent());
            CommonResponse response = null;
            try {
                response = client.getCommonResponse(request);
                log.info("短信返回:{},HttpStatus:{}",JSON.toJSONString(response.getData()),JSON.toJSONString(response.getHttpStatus()));
            } catch (ServerException e) {
                log.info(e.getMessage());
            } catch (ClientException e) {
                log.info(e.getMessage());
            }
            return response;
        }
    }
    
    

    四、MessageStatusEnum:

    package com.reachauto.vspcloud.message.bean.enu;
    
    /**
     * Created by dixl on 2017/7/5.
     */
    public enum MessageStatusEnum {
    
        /**
         * 短信下发
         */
        MESSAGE_RELEASE_SUCCESS("000000", "短信下发成功"),
        MESSAGE_RELEASE_ERROR("200010", "系统错误"),
        MESSAGE_RELEASE_ISNULL("200000", "参数必填项为空"),
        MESSAGE_RELEASE_CLOSE("000000", "短信下发关闭"),
    
    
        MESSAGE_RELEASE_PHONENUM_ERROR("200011", ""),
        MESSAGE_RELEASE_MODELNUM_ERROR("200012", ""),
        MESSAGE_RELEASE_CONTENT_ERROR("200013", ""),
        MESSAGE_RELEASE_OTHER_ERROR("200014", "");
    
    
    
    
    
    
        private final String code;
        private final String name;
    
        MessageStatusEnum(String code, String name) {
            this.code = code;
            this.name = name;
        }
    
        public String getCode() {
            return code;
        }
    
        public String getName() {
            return name;
        }
    
    
    
    }
    

    五、MessageReleaseParameter:

    package com.reachauto.vspcloud.message.bean.param;
    
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    
    @Data
    public class MessageReleaseParameter {
    
        @ApiModelProperty(position = 1, required = true, value = "要接收短信的手机号")
        private String phoneNum;
    
        @ApiModelProperty(position = 1, required = true, value = "短信网关中定义的模版号")
        private String modelNum;
    
        @ApiModelProperty(position = 2, required = true, value = "按照模版定义的短信参数内容")
        private String content;
    
    	public String getPhoneNum() {
    		return phoneNum;
    	}
    
    	public void setPhoneNum(String phoneNum) {
    		this.phoneNum = phoneNum;
    	}
    
    	public String getModelNum() {
    		return modelNum;
    	}
    
    	public void setModelNum(String modelNum) {
    		this.modelNum = modelNum;
    	}
    
    	public String getContent() {
    		return content;
    	}
    
    	public void setContent(String content) {
    		this.content = content;
    	}
    
    
    
    }
    
    

    六、pom依赖

    <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core -->
            <dependency>
                <artifactId>aliyun-java-sdk-core</artifactId>
                <groupId>com.aliyun</groupId>
                <version>3.7.0</version>
            </dependency>
    
            <dependency>
                <artifactId>aliyun-java-sdk-ecs</artifactId>
                <groupId>com.aliyun</groupId>
                <version>4.11.0</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-dysmsapi -->
            <dependency>
                <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
                <groupId>com.aliyun</groupId>
                <version>1.1.0</version>
            </dependency>
    

    七、效果

    在这里插入图片描述

    展开全文
  • PHP缓存数据头 PHP伪造IP PHP全角半角转换函数 PHP农历函数 PHP分页函数 PHP判断字符串是否UTF8格式 php判断爬虫函数 PHP判断远程文件是否存在 PHP图片处理类:缩略,裁剪,圆角,倾斜 PHP多功能图片处理...
  • WordPress 主题 zibll子...修复后台商城统计可能会出现时区不正确的 bug 修复在 php 5.6 版本会报错的 bug(仍强烈建议使用 php7 以上版本) 修复隐藏内容回复可见可能会失效的 bug 修复用户人气值和总点赞不显示的 bug
  • WordPress主题zibll子比...修复后台商城统计可能会出现时区不正确的 bug 修复在 php 5.6 版本会报错的 bug(仍强烈建议使用 php7 以上版本) 修复隐藏内容回复可见可能会失效的 bug 修复用户人气值和总点赞不显示的 bug
  • 实例174 利用Servlet生成动态验证码 实例175 避免客户端访问的并发问题 实例176 在Servlet中使用JDBC访问数据库 实例177 利用Servlet访问数据库连接池 实例178 Servlet实现的个人所得税计算器 实例179 利用...
  • 实例174 利用Servlet生成动态验证码 实例175 避免客户端访问的并发问题 实例176 在Servlet中使用JDBC访问数据库 实例177 利用Servlet访问数据库连接池 实例178 Servlet实现的个人所得税计算器 实例179 利用...
  • 如果不正确,返回到email_verify.jsp private String code; public String execute(){ //用code去数据库查询 select * from d_user where email_verify_code=? //有结果意味着正确,更新is_email_verify字段 ...
  • 小米火警EXE

    2015-05-25 18:41:57
    目前黄牛码,火警能绕过就会绕过,能绕过的情况下会在火警软件界面,弹出验证码,需要用户手动打码,一定时间后能共享就会共享然后转自动打码,能共享的情况下 则需要弹出码就打 直到共享为止,具体要看小米的...
  • PHP开发实战1200例源码

    热门讨论 2012-09-22 16:24:59
    实例116 验证电话号码的格式是否正确 147 实例117 验证Email地址格式是否正确 148 实例118 验证IP地址是否有效 149 实例119 统计关键字的查询结果 150 实例120 计算查询操作的执行时间 151 实例121 查询关键字描红 ...
  • 由于Css属性设置的问题,导致界面完整等等。设计的算法都是自己编写的,可能存在不是最优算法的情况。 二、设计正文 1 需求分析  建立一个用户可以自由交易的平台,通过ajax实现局部刷新,实现网站更具人性化,...
  • $('.email-sp').html('*邮箱格式不正确').css('color','red') return false }else{ $('.email-sp').html('✔').css('color','#F00582') return true } }) // 验证的验证 $('#code')....
  • 其实大多时候后端设计都会为了避免过多恶意的数据库访问而先验证验证码的准确性,例如可以提交明显错误的信息,输入存在的用户名,将对方网站返回的“用户名存在”作为验证码正确性的判断条件,当验证码错误时如...
  • 翎风源码HGE完美版

    2018-07-17 09:23:08
    CHECKRANDOMNO //检测输入的验证码是否正确 #ELSEACT MESSAGEBOX 验证码错误! CLOSE BREAK 4.增加脚本命令:ISONMAP MAP //检测当前人是否在MAP地图上 5.增加脚本命令:DELAYCALL 作用:延时执行同一个NPC脚本中...
  • 3.完善“文本_汇编_取随机数字” 还原为 “文本_取随机数字” 该命令并没有被取消掉,只是被改名了,因此,对于前维护者改名所造成的不便进行道歉 1.重写“线程_启动四参”命令的参数类型和位置 感谢会员 小磊 ...
  • JavaScript网页特效范例宝典源码

    千次下载 热门讨论 2013-09-04 10:40:38
    实例105 随机产生指定位数的验证码 166 实例106 生成随机字符串 167 3.4 日期与时间 169 实例107 显示长日期格式的系统日期 169 实例108 实时显示系统时间 171 第4章 日期和时间 173 4.1 日期时间显示 174 实例109 ...
  • 精易模块[源码] V5.15

    2015-03-21 22:03:37
    6、修正“文本_加密”返回文本传递给“文本_解密”后长度不正确BUG,改为返回字节集。 7、改善“外部编辑框_取密码框文本”当不是密码输入属性时不做任何处理,感谢易友【@wjt741106】反馈。 8、恢复“文本_加密”与...
  • 实例116 验证电话号码的格式是否正确 147 实例117 验证Email地址格式是否正确 148 实例118 验证IP地址是否有效 149 实例119 统计关键字的查询结果 150 实例120 计算查询操作的执行时间 151 实例121 查询关键字描红 ...
  • 实例116 验证电话号码的格式是否正确 147 实例117 验证Email地址格式是否正确 148 实例118 验证IP地址是否有效 149 实例119 统计关键字的查询结果 150 实例120 计算查询操作的执行时间 151 实例121 查询关键字描红 ...
  • javascript网页特效实例

    热门讨论 2010-10-28 08:54:15
    实例105 随机产生指定位数的验证码 166 实例106 生成随机字符串 167 3.4 日期与时间 169 实例107 显示长日期格式的系统日期 169 实例108 实时显示系统时间 171 第4章 日期和时间 173 4.1 日期时间显示...
  • PDF格式扫描版,全书分为6篇20章,共874页。2011年1月出版。 全书压缩打包成2部分,这是第2部分。 注:本系列图书的第I、II卷再版时均相应改名为《xxx开发实例大全》(基础卷)及(提高卷),但内容基本无变化,需要的...
  • PDF格式扫描版,全书分为6篇20章,共874页。2011年1月出版。 全书压缩打包成2部分,这是第1部分。 注:本系列图书的第I、II卷再版时均相应改名为《xxx开发实例大全》(基础卷)及(提高卷),但内容基本无变化,需要的...
  • 实例097 改变长度删除数组中的元素 实例098 删除数组元素后改变其长度 4.2 常用数组排序算法 实例099 使用选择排序法对一维数组进行排序 实例100 使用冒泡排序法对一维数组进行排序 实例101 使用快速排序法...

空空如也

空空如也

1 2 3
收藏数 49
精华内容 19
关键字:

随机验证码格式不正确