zoukankan      html  css  js  c++  java
  • 防止短信狂刷

    private void sendMessage(){
    // String phone = request.getParameter("phone");
    // if(StringUtil.isEmpty(phone)){
    // showErrorJson("手机号不能为空");
    // return;
    // }
    //
    // Member member = this.memberManager.getMemberByUname(phone);
    // if(member==null){
    // this.showErrorJson("["+ phone +"],用户不存在!");
    // return;
    // }
    // //获取短信验证码。。未实现
    // Random random = new Random();
    // StringBuilder sb = new StringBuilder();
    //
    // for(int i=0;i<6;i++){
    // sb.append(random.nextInt(9));
    // }
    // String code = sb.toString();
    // String content = code;
    // String r = SMSUtil.postSendMsg(phone, content, "MB-2013102300");
    // Map map = new HashMap();
    // map.put("mobile",phone );
    // map.put("code", code);
    // ThreadContextHolder.getSessionContext().setAttribute("message_check_code",map);
    // System.out.println(code);
    // if(r!=null&&r.indexOf("0")>0){
    // showSuccessJson("发送成功");
    // }else{
    //
    // showErrorJson("发送失败");
    // }
    String phone = request.getParameter("phone");
    WebSessionContext sessonContext = ThreadContextHolder.getSessionContext();
    Object realCode = sessonContext.getAttribute(ValidCodeServlet.SESSION_VALID_CODE + "findpwd");
    String validcode=request.getParameter("validcode");
    if(realCode!=null&&validcode!=null)
    {
    if(!validcode.equals(realCode))
    {
    System.out.println("验证码错误!");
    showErrorJson("验证码错误!");
    return;
    }
    }else {
    System.out.println("验证码错误!");
    showErrorJson("验证码错误!");
    return;
    }
    //获取短信验证码。。未实现
    Random random = new Random();
    StringBuilder sb = new StringBuilder();
    for(int i=0;i<6;i++){
    sb.append(random.nextInt(9));
    }
    String code = sb.toString();
    String content = code;
    //-------------------------------------------------------------
    //同一个IP请求限制
    System.out.println("进入IP"+SMSUtil.getIpAddr(request)+"手机号:"+phone+"-----入口注册!");
    Object num=ThreadContextHolder.getSessionContext().getAttribute("IP"+SMSUtil.getIpAddr(request));
    System.out.println("num---"+num);
    if(num!=null)
    {
    if(Integer.parseInt(num.toString())>3)
    {
    System.out.println(SMSUtil.getIpAddr(request)+"IP超过限制");
    showErrorJson("已超过限制,请30分钟后再试!");
    return;
    }else {
    ThreadContextHolder.getSessionContext().setAttribute("IP"+SMSUtil.getIpAddr(request),Integer.parseInt(num.toString())+1);
    }
    }else {
    ThreadContextHolder.getSessionContext().setAttribute("IP"+SMSUtil.getIpAddr(request),"1");
    }
    Object req=ThreadContextHolder.getSessionContext().getAttribute("req");
    System.out.println("req---"+req);
    if(req!=null)
    {
    if(Integer.parseInt(req.toString())>3)
    {
    System.out.println(SMSUtil.getIpAddr(request)+"IP超过限制");
    showErrorJson("请求超过限制,请30分钟后再试!");
    return;
    }else {
    ThreadContextHolder.getSessionContext().setAttribute("req",Integer.parseInt(req.toString())+1);
    }
    }else {
    ThreadContextHolder.getSessionContext().setAttribute("req","1");
    }
    //时间间隔
    //System.out.println("时间间隔");
    Object time=ThreadContextHolder.getSessionContext().getAttribute("time");
    System.out.println("time---"+time);
    if(time!=null)
    {
    long cj=System.currentTimeMillis()-Long.parseLong(time.toString());
    if(cj/1000<60)
    {
    System.out.println(SMSUtil.getIpAddr(request)+"时间间隔超过限制");
    showErrorJson("请1分钟后再试!");
    return;
    }else {
    ThreadContextHolder.getSessionContext().setAttribute("time",System.currentTimeMillis());
    }
    }else {
    ThreadContextHolder.getSessionContext().setAttribute("time",System.currentTimeMillis());
    }

    //同一个号码请求限制
    //System.out.println("同一个IP请求限制");
    Object mobile=ThreadContextHolder.getSessionContext().getAttribute("mobile");
    System.out.println("mobile---"+mobile);
    if(mobile!=null)
    {
    if(Integer.parseInt(mobile.toString())>3)
    {
    System.out.println(SMSUtil.getIpAddr(request)+"号码超过限制");
    showErrorJson("您号码已超过限制,请30分钟后再试!");
    return;
    }else {
    ThreadContextHolder.getSessionContext().setAttribute("mobile",Integer.parseInt(mobile.toString())+1);
    }
    }else {
    ThreadContextHolder.getSessionContext().setAttribute("mobile","1");
    }
    //----------------------------------------------------------


    String r = SMSUtil.postSendMsg(phone, content, "JSM40505-0003");
    Map map = new HashMap();
    map.put("mobile",phone );
    map.put("code", code);
    ThreadContextHolder.getSessionContext().setAttribute("message_check_code",map);
    System.out.println(code);
    if(r!=null&&r.indexOf("<status>0</status>")>0){
    showSuccessJson("发送成功");
    }else{

    showErrorJson("发送失败");
    }


    }

  • 相关阅读:
    Python3安装turtle提示错误:Command "python setup.py egg_info" failed with error code 1
    慕学生鲜xadmin登录不成功解决办法
    mysql删除后ID不连续解决办法
    Mac 安装gevent
    ubuntu 下 docker的简单使用
    python 字典的一些简单操作
    列表推导式
    Serializer字段和选项
    添加包解决一些导包问题
    css 文本换行,文本空白符处理相关 属性:white-space word-wrap word-break
  • 原文地址:https://www.cnblogs.com/chenweida/p/6145797.html
Copyright © 2011-2022 走看看