使用“樂信”簡訊驗證碼介面來實現網站使用者註冊

來源:互聯網
上載者:User

標籤:java網站使用者註冊

閱讀下文之前,首先要瞭解下樂信簡訊介面接入指南:http://www.lx598.com/jrzn.html 。
其次是需要閱讀樂信簡訊介面API說明文檔:http://www.lx598.com/apitext.html 。

這裡給大家分享下,php開發語言下,網站接入簡訊驗證碼介面實現使用者註冊簡訊驗證功能。

所以還需要閱讀下樂信php簡訊介面demo(http://www.lx598.com/javaCode.html),以便更好的理解下面執行個體。


一、前端:


①註冊介面基本的資訊都有以下幾點(直接):圖片驗證碼,手機號,密碼,驗證碼幾個基本資料


②對手機號進行判斷,是否註冊過,手機號格式是否正確

③擷取簡訊驗證碼


二、前端註冊頁面代碼



<div id="con2"  height:370px;"><table width="92%" border="0" align="center" cellspacing="0" style="padding:0px; margin:0px;"><tbody style="padding:0px; margin:0px;">  <tr height="40"><td class="reg_left">圖片校正碼</td><td width="260px"><input name="inputCaptcha" id="inputCaptcha"type="text" size="4" class="reg_input"/></td><td><img src="${path }/sys/loginCaptcha"  id="validImg" onclick="refreshYzm();" /><span id="imgRs" style="color:red;">點擊圖片重新整理</span></td></tr><tr><td class="reg_left">手機號碼</td><td width="260px"><input type="text" name="phoneRe"id="phoneRe" class="reg_input" onchange="resetCount()" /><input type="hidden" name="smsCount"id="smsCount" value="1"/></td><td class="reg_xxts"><span id="phoneReInfo"></span></td></tr><tr height="40"><td class="reg_left"></td><td colspan="2"><a href="javascript:getRegCode();"class="reg_phone">免費擷取驗證碼</a></td></tr><tr height="60"><td class="reg_left">驗證碼</td><td width="260px"><input type="text" name="regNum" id="regNum"class="reg_input" onblur="lostInput()" /></td><td class="reg_xxts"><span id="regNumInfo"></span></td></tr><tr height="60"><td class="reg_left">密碼</td><td><input type="password" name="pass2" id="pass2"class="reg_input" maxlength="16"onKeyUp="pwStrength2(this.value)"onkeydown="pwStrength2(this.value)" /><br/><table width="250" border="0" cellspacing="1" cellpadding="1"bordercolor="#cccccc" height="25" style="display:inline"><tr align="center" bgcolor="#eeeeee"><td width="84px" id="strength_L2">弱</td><td width="84px" id="strength_M2">中</td><td width="84px" id="strength_H2">強</td></tr></table></td><td class="reg_xxts"><span id="pass1Info2"></span></td></tr><tr height="60"><td class="reg_left">確認密碼</td><td><input type="password" name="passRe2" id="passRe2"class="reg_input" maxlength="16" onKeyUp="regiPass(1)"onkeydown="regiPass(1)" /></td><td class="reg_xxts"><span id="pass2Info2"></span></td></tr><tr height="30"><td>&nbsp;</td><td class="reg_fwtk"><input type="checkbox"name="agreeCheck2" id="agreeCheck2" checked /> 我已經閱讀並同意《<ahref="${webRootPath}/lxfwtk.html" target="_blank">服務條款</a>》</td><td class="reg_fwtk">&nbsp;</td></tr><tr height="60"><td>&nbsp;</td><td><a href="#" target="_self" class="reg_sub"onclick="registerByAimcode()">立即註冊</a></td><td>&nbsp;</td></tr></tbody></table></div>
三、下面是實現圖片驗證和傳送簡訊的js代碼:



//手機號格式驗證function isPhoneNum(str) {var reg = /^0?(13[0-9]|15[012356789]|18[012356789]|14[57]|17[0-9]|199)[0-9]{8}$/;return reg.test(str);}//判斷圖形驗證碼填寫是否正確var canCaptcha = false;function getRegCode() {if($.trim($(’#inputCaptcha’).val()) == ’’){  $(’#imgRs’).html("圖形驗證碼不可為空");  $(’#inputCaptcha’).select();  return;  }if (!isPhoneNum($(’#phoneRe’).val())) {document.getElementById(’phoneReInfo’).innerHTML = ’<font color="red">請填寫有效11位手機號碼</font>’;} else {document.getElementById(’phoneReInfo’).innerHTML = ’註冊後用手機號碼進行登入’;//判斷手機號是否註冊及發送驗證碼$.ajax({url : "${path}/account/checkMob",type : "POST",data : "account.ACCMOB=" + $(’#phoneRe’).val(),contentType : "application/x-www-form-urlencoded;charset=utf-8",async : false,success : function(data) {res = data;if (data == 1) {document.getElementById(’phoneReInfo’).innerHTML = ’<font color="red">該手機號已被註冊</font>’;refreshYzm();} else {document.getElementById(’phoneReInfo’).innerHTML = ’<font color="green">該手機號可用</font>’;$.ajax({url : "${path}/account/reAimcodeGetVeCode",type : "POST",data : "account.ACCMOB="+ $(’#phoneRe’).val()+ "&fromSource=4&smsCount="+$(’#smsCount’).val()+"&searchName="+$.trim($(’#inputCaptcha’).val()),contentType : "application/x-www-form-urlencoded;charset=utf-8",async : false,success : function(data) {myArray = data.split("&");if (myArray[0] == ’發送成功!’) {canCaptcha = true;document.getElementById(’phoneReInfo’).innerHTML = ’<font color="green">驗證碼已發送,請注意查收!</font>’;accountFID = myArray[1];}else if(data == ’限制申請’){document.getElementById(’phoneReInfo’).innerHTML = ’<font color="red">一個手機號碼一天最多隻能申請3次!</font>’;refreshYzm();}else if(data == ’驗證碼錯誤’){document.getElementById(’phoneReInfo’).innerHTML = ’<font color="red">驗證碼錯誤!</font>’;refreshYzm();}},error : function() {alert(’異常,內部驗證出錯!’+data);}});}},error : function() {alert(’異常,驗證出錯!’);}});}//驗證碼申請次數var smsCount=parseInt($(’#smsCount’).val());smsCount=smsCount<3?smsCount+1:3;$(’#smsCount’).val(smsCount);}//重設申請次數function resetCount(){$(’#smsCount’).val(1);}//點擊重新整理圖片驗證碼function refreshYzm(){$(’#inputCaptcha’).val(’’);$(’#validImg’).attr(’src’,’${path }/sys/loginCaptcha?tm=’+Math.random());}//密碼強度檢測function CharMode(iN) {if (iN >= 48 && iN <= 57) //數字return 1;if (iN >= 65 && iN <= 90) //大寫字母return 2;if (iN >= 97 && iN <= 122) //小寫return 4;elsereturn 8; //特殊字元}//計算出當前密碼當中一共有多少種模式function bitTotal(num) {modes = 0;for ( var i = 0; i < 4; i++) {if (num & 1)modes++;num >>>= 1;}return modes;}//checkStrong函數//返回密碼的強度層級function checkStrong(sPW) {if (sPW.length <= 4)return 0; //密碼太短Modes = 0;for ( var i = 0; i < sPW.length; i++) {//測試每一個字元的類別並統計一共有多少種模式Modes |= CharMode(sPW.charCodeAt(i));}return bitTotal(Modes);}//pwStrength函數//當使用者放開鍵盤或密碼輸入框失去焦點時,根據不同的層級顯示不同的顏色function pwStrength(pwd) {checkPassLong(0);var O_color = "#eeeeee";var L_color = "#FF0000";var M_color = "#FF9900";var H_color = "#33CC00";if (pwd == null || pwd == ’’) {Lcolor = Mcolor = Hcolor = O_color;} else {var S_level = checkStrong(pwd);switch (S_level) {case 0:Lcolor = Mcolor = Hcolor = O_color;case 1:Lcolor = L_color;Mcolor = Hcolor = O_color;break;case 2:Lcolor = Mcolor = M_color;Hcolor = O_color;break;default:Lcolor = Mcolor = Hcolor = H_color;}}document.getElementById("strength_L").style.background = Lcolor;document.getElementById("strength_M").style.background = Mcolor;document.getElementById("strength_H").style.background = Hcolor;return;}function pwStrength2(pwd) {checkPassLong(1);var O_color = "#eeeeee";var L_color = "#FF0000";var M_color = "#FF9900";var H_color = "#33CC00";if (pwd == null || pwd == ’’) {Lcolor = Mcolor = Hcolor = O_color;} else {var S_level = checkStrong(pwd);switch (S_level) {case 0:Lcolor = Mcolor = Hcolor = O_color;case 1:Lcolor = L_color;Mcolor = Hcolor = O_color;break;case 2:Lcolor = Mcolor = M_color;Hcolor = O_color;break;default:Lcolor = Mcolor = Hcolor = H_color;}}document.getElementById("strength_L2").style.background = Lcolor;document.getElementById("strength_M2").style.background = Mcolor;document.getElementById("strength_H2").style.background = Hcolor;return;}function checkPassLong(flag) {var passStr = $(’#pass’).val();if (flag == 1) {passStr = $(’#pass2’).val();}passStr = passStr.replace(/(\s*$)/g, "");if (passStr.length == 0 || passStr.length < 6) {if (flag == 0) {document.getElementById(’pass1Info’).innerHTML = ’<font color="red">密碼長度大於6位,不可為空格</font>’;} else {document.getElementById(’pass1Info2’).innerHTML = ’<font color="red">密碼長度大於6位,不可為空格</font>’;}return true;} else {if (flag == 0) {document.getElementById(’pass1Info’).innerHTML = ’由6-16位字元組成,請使用英文字母、符號或數字。’;} else {document.getElementById(’pass1Info2’).innerHTML = ’由6-16位字元組成,請使用英文字母、符號或數字。’;}return false;}}//密碼強度驗證end5、後台action方法,Account為使用者類// 註冊新使用者@Action(value = "reAimcodeGetVeCode")public void reAimcodeGetVeCode() {PrintWriter out;String result = "驗證碼申請失敗!請重試!";try {smsUnit = new SmsUnit(ConfUtil.getProperty("sys_sms_server"));if (null != account.getACCMOB() && !account.getACCMOB().equals("")) {account.setACCSTATUS(new BigDecimal(1));//設定使用狀態未用String verifyCode = String.valueOf(new Random().nextInt(899999) + 100000);//產生簡訊驗證碼account.setFSECURITYCODE(verifyCode);account.setACCCREATEDATE(new Date());Calendar c = Calendar.getInstance();c.add(Calendar.DAY_OF_MONTH, 1); // 設定驗證碼失效時間為24小時account.setFREGISTERSOURCE(fromSource);// 判斷該手機是否擷取過驗證碼AccountCriteria accountCriteria = new AccountCriteria();accountCriteria.createCriteria().andACCMOBEqualTo(account.getACCMOB());List<Account> accs = accountService.selectByExample(accountCriteria);int re = 0;Integer cishu = 0;if (accs == null || accs.isEmpty()) {cishu = 1;account.setSDKURL("1");account.setFSECURITYOUTTIME(c.getTime());BigDecimal accid=accountService.getPrimaryKey();account.setFID(accid);re = accountService.insertSelective(account,IPUtil.getRealIP(request));Cookie cookie=new Cookie("id" , accid.toString());cookie.setMaxAge(Integer.MAX_VALUE);response.addCookie(cookie);} else {Account ac = accs.get(0);account.setFID(ac.getFID());Date date = new Date();// 如果是新的一天則使用次數修改為1if (date.getDate() == ac.getFSECURITYOUTTIME().getDate()) {account.setSDKURL("1");} else {Integer count = Integer.parseInt(ac.getSDKURL());account.setSDKURL(count + 1 + "");}cishu = Integer.parseInt(account.getSDKURL());account.setFSECURITYOUTTIME(c.getTime());if (cishu <= 3)re = accountService.updateByPrimaryKeySelective(account);}if (re > 0 && cishu <= 3) {request.getSession().removeAttribute(ConstValues.WEB_SESSION_PROMOTE);AccountCriteria ac = new AccountCriteria();ac.createCriteria().andACCMOBEqualTo(account.getACCMOB());List<Account> acList = new ArrayList<Account>();acList = accountService.selectByExample(ac);if (acList != null && acList.size() > 0) {// 這裡執行簡訊發送DateFormat df = new SimpleDateFormat("yyyyMMddhhmmss");String bizID = df.format(new Date());SendSmsReply sendSmsReply = smsUnit.sendSms("","","您的驗證碼為:" + verifyCode+",該碼有效期間為24小時,該碼只能使用一次!【簡訊簽名】", bizID,account.getACCMOB(), "", 1 + "", 1 + "","","","" , "");result = sendSmsReply.getReplyMsg() + "&"+ acList.get(0).getFID() + "&"+ acList.get(0).getSDKURL();}} else if (cishu > 3) {result = "限制申請";}}} catch (Exception e) {logger.error("擷取驗證碼失敗", e);} finally {try {response.setContentType("text/html;charset=UTF-8");response.setCharacterEncoding("UTF-8");out = response.getWriter();out.write(result);} catch (IOException e) {logger.error("", e);}}}SmsUnit簡訊發送類代碼:// 傳送簡訊public SendSmsReply sendSms(String acname, String acpwdmd5,String smsContent, String batchnumber, String mobiles,String schTime, String serialPkgNumber, String countPkgNum,String sendType,String pid,String reno) {httppost = new HttpPost("www.lx198.com/lxDlsms/sms/sendSms");List<NameValuePair> formparams = new ArrayList<NameValuePair>();formparams.add(new BasicNameValuePair("sendSms.acName", acname));// 使用者名稱formparams.add(new BasicNameValuePair("sendSms.pwd", acpwdmd5));// 密碼formparams.add(new BasicNameValuePair("sendSms.smsContent", smsContent));// 簡訊內容formparams.add(new BasicNameValuePair("sendSms.mobiles", mobiles));// 電話號碼formparams.add(new BasicNameValuePair("sendSms.schTime", schTime));formparams.add(new BasicNameValuePair("sendSms.batchNum",batchnumber));formparams.add(new BasicNameValuePair("sendSms.pkgNum",serialPkgNumber));formparams.add(new BasicNameValuePair("sendSms.pkgCount",countPkgNum));formparams.add(new BasicNameValuePair("sendSms.sendType",sendType));formparams.add(new BasicNameValuePair("sendSms.pid",pid));formparams.add(new BasicNameValuePair("sendSms.reno",reno));//private String reno="";try {String replyString = doPost(formparams);return (SendSmsReply) XmlReplyUnit.fromXml(replyString,new SendSmsReply());} catch (ParseException e) {logger.error("",e);} catch (Exception e) {logger.error("",e);}return null;}

使用“樂信”簡訊驗證碼介面來實現網站使用者註冊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.