現(xiàn)在基本每個(gè)網(wǎng)站或app用戶注冊(cè)頁(yè)面都添加有手機(jī)短信驗(yàn)證功能,添加手機(jī)短信驗(yàn)證功能,能夠有效的避免了非法注冊(cè)和爛注冊(cè)的情況,以及獲取用戶的有效聯(lián)系方式,那么如何實(shí)現(xiàn)手機(jī)短信驗(yàn)證功能呢?下面就以java開(kāi)發(fā)語(yǔ)言為例,詳細(xì)為大家介紹下。
一、實(shí)現(xiàn)手機(jī)短信驗(yàn)證功能的基本思路如下:
1、首先找一家靠譜的短信驗(yàn)證碼接口服務(wù)商,獲取短信驗(yàn)證碼調(diào)用地址,和相關(guān)接入文檔。這里強(qiáng)烈建議大家選擇動(dòng)力思維樂(lè)信短信驗(yàn)證碼接口服務(wù)商,一家專業(yè)提供短信應(yīng)用服務(wù)14年的企業(yè);
2、在網(wǎng)站信息提交頁(yè)面請(qǐng)求發(fā)送信息;
3、服務(wù)器向動(dòng)力思維樂(lè)信短信接口平臺(tái)提交請(qǐng)求;
4、動(dòng)力思維樂(lè)信短信接口平臺(tái)通過(guò)三大運(yùn)營(yíng)商將驗(yàn)證碼內(nèi)容發(fā)送到用戶的手機(jī)中。
二、手機(jī)號(hào)碼短信驗(yàn)證前臺(tái)頁(yè)面效果實(shí)現(xiàn)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > <html xmlns> <head> <title></title> <script src="js/jquery-1.4a2.min.js" type="text/javascript"></script> <script type="text/javascript"> /*-------------------------------------------*/ var InterValObj; //timer變量,控制時(shí)間 var count = 60; //間隔函數(shù),1秒執(zhí)行 var curCount;//當(dāng)前剩余秒數(shù) var code = ""; //驗(yàn)證碼 var codeLength = 6;//驗(yàn)證碼長(zhǎng)度 function sendMessage() { curCount = count; var dealType; //驗(yàn)證方式 tel = $(’#tel’).val(); if(tel!=’’){ //驗(yàn)證手機(jī)有效性 var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+d{8})$/; if(!myreg.test($(’#tel’).val())) { alert(’請(qǐng)輸入有效的手機(jī)號(hào)碼!’); return false; } tel = $(’#tel’).val(); //產(chǎn)生驗(yàn)證碼 for (var i = 0; i < codeLength; i++) { code += parseInt(Math.random() * 9).toString(); } //設(shè)置button效果,開(kāi)始計(jì)時(shí) $("#btnSendCode").attr("disabled", "true"); $("#btnSendCode").val("請(qǐng)?jiān)?quot; + curCount + "秒內(nèi)輸入驗(yàn)證碼"); InterValObj = window.setInterval(SetRemainTime, 1000); //啟動(dòng)計(jì)時(shí)器,1秒執(zhí)行一次 //向后臺(tái)發(fā)送處理數(shù)據(jù) $.ajax({ type: "POST", //用POST方式傳輸 dataType: "text", //數(shù)據(jù)格式:JSON url: ’yanzhengma.do’, //方法路徑(根據(jù)實(shí)際地址) data: "&tel=" + tel + "&code=" + code, error: function (XMLHttpRequest, textStatus, errorThrown) { }, success: function (msg){ } }); }else{ alert(’請(qǐng)?zhí)顚懯謾C(jī)號(hào)碼’); } } //timer處理函數(shù) function SetRemainTime() { if (curCount == 0) { window.clearInterval(InterValObj);//停止計(jì)時(shí)器 $("#btnSendCode").removeAttr("disabled");//啟用按鈕 $("#btnSendCode").val("重新發(fā)送驗(yàn)證碼"); code = ""; //清除驗(yàn)證碼。如果不清除,過(guò)時(shí)間后,輸入收到的驗(yàn)證碼依然有效 } else { curCount--; $("#btnSendCode").val("請(qǐng)?jiān)?quot; + curCount + "秒內(nèi)輸入驗(yàn)證碼"); } } </script> </head> <body> <input name="tel" id=tel type="text" /> <input id="btnSendCode" type="button" value="發(fā)送驗(yàn)證碼" onclick="sendMessage()" /></p> </body> </html>
三、在yanzhengma.do方法里調(diào)用接口方法
/** * 調(diào)用短信服務(wù)器短信接口 * @param accName 樂(lè)信賬號(hào)用戶名 * @param accPwd 樂(lè)信賬號(hào)密碼 * @param seed 當(dāng)前時(shí)間 格式:YYYYMMDD HHMISS 例如:20130806102030 * @param aimcodes 手機(jī)號(hào)多個(gè)手機(jī)號(hào)之間英文半角逗號(hào)隔開(kāi) * @param content 內(nèi)容后加簽名 * @param schTime 定時(shí)時(shí)間格式如:2010-01-01 08:00:00 * @return 服務(wù)端返回的結(jié)果 ok:業(yè)務(wù)id 或者 錯(cuò)誤代碼 */ public static String sendSms(String accName,String accPwd,String mobies,String content,String schTime){ StringBuffer sb = new StringBuffer("https://sdk.lx198.com/sdk/send2?"); try { String seed=new SimpleDateFormat(dateFormatStr).format(new Date()); sb.append("&accName="+accName); sb.append("&seed="+seed); sb.append("&accPwd="+MD5.getMd5String(MD5.getMd5String(accPwd)+seed)); sb.append("&aimcodes="+mobies); sb.append("&schTime="+URLEncoder.encode(schTime,"UTF-8")); //空格標(biāo)點(diǎn)符號(hào)做encode轉(zhuǎn)換 sb.append("&content="+URLEncoder.encode(content,"UTF-8")); //中文做encode轉(zhuǎn)換 URL url = new URL(sb.toString()); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); return in.readLine(); } catch (Exception e) { e.printStackTrace(); } return null; }
四、提交表單信息時(shí)對(duì)短信驗(yàn)證碼驗(yàn)證
//手機(jī)驗(yàn)證碼開(kāi)始
session_start(); $svalitel = $_SESSION[’mobilecode’]; $vdcodetel = empty($vdcodetel) ? ’’ : strtolower(trim($vdcodetel)); if(strtolower($vdcodetel)!=$svalitel || $svalitel==’’) { ResetVdValue(); //echo "Pageviews=".$vdcodetel; ShowMsg("手機(jī)驗(yàn)證碼錯(cuò)誤!", ’-1’); exit(); }
相關(guān)閱讀:
樂(lè)信短信驗(yàn)證接口接入指南:/uploads/allimg/181025/100932D58-1.jpg
樂(lè)信短信驗(yàn)證接口API文檔:/uploads/allimg/181025/100932OE-2.jpg
樂(lè)信短信驗(yàn)證接口java demo:/uploads/allimg/181025/100932K25-3.jpg