現(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