验证码的获取与验证

一、验证码的获取(将相关内容存在session中);

public class SendValidMsg extends HttpServlet {

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 如果不存在 session 会话,则创建一个 session 对象
        HttpSession session = req.getSession(true);

        String phoneNum = req.getParameter("phone");
        String validCode = "";

        int times = 0;
        String msg = "";
        boolean sendflag = true;
        validCode = StringUtil.getStr(session.getAttribute("validcode" + phoneNum));
        times = NumberUtil.getIntegerValue(session.getAttribute("times" + phoneNum));
        if (times == 3) {
            msg = "您已超过最多重发次数限制!";
            sendflag = false;
        } else if (times > 3) {
            msg = "验证码已失效!";
            sendflag = false;
        } else {
            msg = "验证码发送成功!";
        }
        times += 1;
        if (validCode.equals("")) {
            validCode = StringUtil.getRandNum(4);//获取4位随机数
        }
        session.setAttribute("validcode" + phoneNum, validCode);
        session.setAttribute("times" + phoneNum, times);
        session.setAttribute("sendtime" + phoneNum, DateUtil.date2Str(new Date(), "yyyy-MM-dd HH:mm:ss"));

        if (sendflag) {
            MessageClient.sendMessage(phoneNum, "尊敬的用户您的验证码:" + validCode + ",请在5分钟内使用。回复TD退订。");
        }

        JSONObject resultObj = new JSONObject();
        resultObj.put("msg", msg);
        resultObj.put("success", true);
        try {
            resp.setContentType("application/x-json");
            resp.setCharacterEncoding("UTF-8");
            PrintWriter out = resp.getWriter();
            out.write(resultObj.toJSONString());
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

二、验证。

public class ValidMsg extends HttpServlet {

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 如果不存在 session 会话,则创建一个 session 对象
        HttpSession session = req.getSession(true);

        String validCode = "";
        String phoneNum = req.getParameter("phone");
        int times = 0;
        String msg = "";
        String validCode1 = "";
        validCode = StringUtil.getStr(session.getAttribute("validcode" + phoneNum)); //存在session中的验证码
        times = NumberUtil.getIntegerValue(session.getAttribute("times" + phoneNum)); //发送次数,发送3次以上验证码失效。
        int validTimes = 0;
        Long intervalTime = (long) 0;
        validTimes = NumberUtil.getIntegerValue(session.getAttribute("validtimes" + phoneNum)); //验证次数,错误验证5次以上验证码失效。
        Date now = new Date();   //当前时间
        Date sendTime = DateUtil.getDate(StringUtil.getStr(session.getAttribute("sendtime" + phoneNum)), "yyyy-MM-dd HH:mm:ss"); //从session中取验证码发送时间
        if (sendTime != null) {
            intervalTime = now.getTime() - sendTime.getTime();
        }
        boolean validflag = false;   //是否验证通过
        if (times > 3 || intervalTime > 5 * 60 * 1000 || validTimes > 5) {
            msg = "验证码已失效,请重新打开浏览器再次注册!";
        } else {
            validCode1 = req.getParameter("validcode");   //输入的验证码
            if (validCode1.toLowerCase().equals(validCode.toLowerCase()) && !validCode.toLowerCase().equals("")) {
                //msg = "验证通过!";
                validflag = true;
            } else {
                msg = "验证码输入错误!";
                validTimes += 1;
                session.setAttribute("validtimes" + phoneNum, validTimes);
            }
        }

        JSONObject resultObj = new JSONObject();
        resultObj.put("msg", msg);
        resultObj.put("validflag", validflag);
        resultObj.put("success", true);
        try {
            resp.setContentType("application/x-json");
            resp.setCharacterEncoding("UTF-8");
            PrintWriter out = resp.getWriter();
            out.write(resultObj.toJSONString());
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
时间: 2024-10-09 05:47:59

验证码的获取与验证的相关文章

iOS使用技能 - 短信,语言验证码的获取与验证小结

最近有学习一个小技能,这里小结一下,分享给大家,互相交流. 首先是大体步骤: 在mob官网注册,然后添加短信验证的应用 使用cocoapods导入框架 Podfile文件: platform :ios, "6.0" target '短信验证'do # Mob产品公共库pod 'MOBFoundation_IDFA'# SMSSDK必须 pod 'SMSSDK' end 3.在AppDelegate注册应用AppKey 4.获取验证码 5.提交验证码 6.注意点:适配要记得开启https

PHP GD 生成图片验证码+session获取储存验证码

下面分享一个PHP制作的图片验证码案例:案例如下图: 运用PHP GD详细请看:http://www.php.net/manual/zh/book.image.php 后台图片代码如下: <?php session_start(); $image = imagecreatetruecolor(100,30);//创建一个宽100,高度30的图片 $bgcolor=imagecolorallocate($image,255,255,255);//图片背景是白色 imagefill($image,0

Thinkphp中验证码的使用以及验证的实现

<input class="TxtValidateCodeCssClass" id="captcha" name="captcha" type="text"> -----------验证码的输入框 <img src="{$smarty.const.__CONTROLLER__}/verifyImg" onclick="this.src='{$smarty.const.__CONT

Android登录客户端,验证码的获取,网页数据抓取与解析,HttpWatch基本使用

大家好,我是M1ko.在互联网时代的今天,如果一个App不接入互联网,那么这个App一定不会有长时间的生命周期,因此Android网络编程是每一个Android开发者必备的技能,博主是在校大学生,自学Android一年半多,正好通过一个模拟登录校园网软件,来给大家演示如何在网页上抓取我们想要的数据,以及将数据Post给服务器.如果有什么错误或改进欢迎大家指正=-= ,如果想交流博主qq 136057505 好的废话不多说看一下我们的重点 Httpwatch等软件抓取Post请求 如何获取验证码

asp.net登录时验证码的制作与验证

1.新建一个页面,ImageCode.aspx 2.在Page_Load中添加如下代码 string tmp = RndNum(4); HttpCookie a = new HttpCookie("ImageV ", tmp); Response.Cookies.Add(a); this.ValidateCode(tmp); 3.在该页面中添加两个方法 private void ValidateCode(string VNum) { Bitmap Img = null; Graphic

&lt;验证码的产生&gt;C语言---验证码的产生和验证

无论在网页还是软件上登录时候都会遇到验证码的问题,不知道不懂其中奥秘的码友有没有兴趣一起来探讨一下. 其实并没有什么奥秘可言,就是产生随机数,然后让产生的随机数做为字符库(提前做好的数字字母字符串)的下标,就这样从字符库中随机提取出组成的小字符串就是最简单的字符串了,当然你可以自己创建字符库的内容. 以下是用C语言编写产生验证码和验证验证码的过程的代码: #include <stdio.h> #include <stdlib.h> #include <time.h> #

yii 验证码的使用和验证过程

如果要实现这个过程的话,需要几个步骤 第一步就是controller的操作 在要操作的控制器中添加如下代码: public function actions(){ return array( // captcha action renders the CAPTCHA image displayed on the contact page 'captcha'=>array( 'class'=>'CCaptchaAction', 'backColor'=>0xFFFFFF, 'maxLeng

登陆页老是提示验证码错误,validate验证控件IE下用remote方法明明返回true 但是还是报错,提示验证码错误

登陆页后台:login.php <?php /** * 前台登录 退出操作 * */ defined('IN_B2B2C') or exit('Access Invalid!'); header("Content-type: text/html; charset=utf-8"); class loginControl extends BaseHomeControl { public function __construct(){ parent::__construct(); Tp

注册信息时,验证码的发送与验证

简单的注册功能,代码和图样如下,共享给大家,希望对你有所帮助 布局文件: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_heig