1. 程式人生 > >使用者登入,實現傳送手機驗證碼。

使用者登入,實現傳送手機驗證碼。

傳送手機驗證碼,要求具有如下功能需求、業務邏輯:

(1)、使用者輸入手機號,當輸入的手機號碼為空時,提示,並且要求使用者輸入手機號;

(2)、傳送手機號碼後,button按鈕,自動變為不可點選,然後60秒倒計時;

(3)、後臺成功傳送驗證碼給手機;

   (4)、使用者輸入驗證碼,後臺判斷驗證碼是否正確。

現在逐一實現:

(1)、使用者輸入手機號,當輸入的手機號碼為空時,提示,並且要求使用者輸入手機號;

 <td width="60%">
                  <input id="user_sn" class="registerInput" name="user_sn" type="text" maxlength="50" value="" onkeyup="showContent(this,event,'zTree','dictSn',true,true);" autocomplete="off" />
                     <br/><span class="grey2">使用者名稱可為手機號</span></td>

 <td align="right">驗證碼<br />  <span class="grey2">( captcha )</span><br /></td>
                              <td>
                                  <input type="text" class="left" style="width:80px;height:30px;border-right:none;" name="code" id="code"/><input name="input3" id="code_button" class="font14 left" style="background:#f2f2f2;width:120px;height;30px;line-height:30px;" type="button" onclick="getCode(this);" value="免費獲取驗證碼"/>
                                 <input type="hidden" class="registerInput" name="code_value" id="code_value"/>
                              <br/>
                              <span class="grey2">直接發到手機或者是郵箱</span></td>

判斷手機號碼是否為空:function getCode(obj){-
        var user_sn=document.getElementById('user_sn').value;
        if('' == user_sn){
            $.jBox.info('請輸入使用者名稱!', '提示');
            document.getElementById('user_sn').focus();
        }}

(2)、傳送手機號碼後,button按鈕,自動變為不可點選,然後60秒倒計時;

 <input type="text" class="left" style="width:80px;height:30px;border-right:none;" name="code" id="code"/><input name="input3" id="code_button" class="font14 left" style="background:#f2f2f2;width:120px;height;30px;line-height:30px;" type="button" onclick="getCode(this);" value="免費獲取驗證碼"/>

     <input type="text" class="left" style="width:80px;height:30px;border-right:none;" name="code" id="code"/><input name="input3" id="code_button" class="font14 left" style="background:#f2f2f2;width:120px;height;30px;line-height:30px;" type="button" onclick="getCode(this);" value="免費獲取驗證碼"/>

<%-- 獲取驗證碼--%>
    var wait=60;
    var interValObj;
    document.getElementById("code_button").disabled = false;   
    
    function getCode(obj){-
        var user_sn=document.getElementById('user_sn').value;
        if('' == user_sn){
            $.jBox.info('請輸入使用者名稱!', '提示');
            document.getElementById('user_sn').focus();
        }else{
            <%--設定button效果,開始計時  --%>
            $("#code_button").attr("disabled", "true");  
            $("#code_button").val("倒計時 " + wait + " 秒");  
            interValObj = window.setInterval(setRemainTime, 1000); <%--啟動計時器,1秒執行一次  --%>
            $.ajax({  
                type: "post",
                dataType: "text",
                url: '${webAppUrl}/cust/code.html?user_sn='+user_sn,
                async:false,
                success: function (msg){
                    if(!isNaN(msg)){
                        document.getElementById('code_value').value = msg;
                    }else{
                        $.jBox.info('資訊未傳送成功,請確認手機號碼或郵箱是否正確!!!', '提示');
                    }
                }  
            });
        }
    }

<%--timer處理函式  --%>
    function setRemainTime() {  
        if (wait == 0) {                  
            window.clearInterval(interValObj);<%--//停止計時器  --%>
            $("#code_button").removeAttr("disabled");<%--//啟用按鈕  --%>
            $("#code_button").val("重新發送驗證碼");  
            document.getElementById('code_value').value = ''; <%--//清除驗證碼。如果不清除,過時間後,輸入收到的驗證碼依然有效      --%>
            wait = 60;
        }  
        else {  
            wait--;  
            $("#ait + " 秒");  
        }  
    }

(3)、後臺成功傳送驗證碼給手機;

                3.1生成驗證碼:String code = " ";

                                              Random random = new Random();

                                               for(int i=0; i<6; i++){    //表示生成六位驗證碼

                                                       code += String.valueOf(random.nextInt(10));   //  採用隨機碼生成0-10(包括0,不包括10)的驗證碼,生成六次,構成六位數驗證碼;

                                                }

              3.2  生成驗證碼簡訊:

                            String result = SmsSendUtil.sendSms(user_name, "您好!請您將驗證碼:\""+code+"\"輸入在頁面上的\"驗證碼文字對話方塊\"進行驗證。謝謝!!!【中國成本管控網】");     

                             //SmsSendUtil是一個包,裡面的方法sendSms,這個包我等會上傳到csdn資源裡面,就可以了。

             3.3 返回code給jsp頁面:response.getWriter().print(code);

(4)、使用者輸入驗證碼,後臺判斷驗證碼是否正確。

              $.ajax({  
                type: "post",
                dataType: "text",
                url: '${webAppUrl}/cust/code.html?user_sn='+user_sn,
                async:false,
                success: function (msg){                          //返回msg也就是code(後臺傳送的驗證碼);
                    if(!isNaN(msg)){
                        document.getElementById('code_value').value = msg;   //如果前臺輸入的code值,和後臺生成的code值相同,那麼驗證碼輸入成功。
                    }else{
                        $.jBox.info('資訊未傳送成功,請確認手機號碼或郵箱是否正確!!!', '提示');
                    }
                }  
            });