驗證碼的獲取與驗證


一、驗證碼的獲取(將相關內容存在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();
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM