這是這個(gè)系列的最后一篇了,主要介紹前端的數(shù)據(jù)處理。主要有幾個(gè)關(guān)鍵技術(shù)點(diǎn):
1.當(dāng)頁(yè)面打開時(shí),判斷上次短信發(fā)送請(qǐng)求的時(shí)間間隔有沒(méi)有到,如果沒(méi)有到,則前端顯示倒計(jì)時(shí),并且禁用按鈕。由于數(shù)據(jù)來(lái)自于后端(在后端篇里面說(shuō)到過(guò)),所以就算用戶重新刷新頁(yè)面也不能重置前端的倒計(jì)時(shí)時(shí)間。
2.防止用戶在發(fā)送短信驗(yàn)證碼時(shí),由于點(diǎn)擊過(guò)快,一次發(fā)送2條或2條以上的情況。
原理:聲明一個(gè)標(biāo)記變量為true,只有標(biāo)記為true時(shí),才能執(zhí)行ajax發(fā)送。當(dāng)點(diǎn)擊發(fā)送按鈕時(shí),把標(biāo)記設(shè)置false,只有等ajax返回?cái)?shù)據(jù)后,才重置為true。
3.無(wú)論短信是否發(fā)送成功,都會(huì)重置圖形驗(yàn)證碼。做到每次發(fā)送短信,都需圖形驗(yàn)證碼的驗(yàn)證。
在sms/register.php中添加代碼:
<script src="js/jquery.js"></script>
<script>
var time = 0;
var res = null;
var sendNode = null;
var diffTime = "<?php echo $diff; ?>";
/**
* 執(zhí)行倒計(jì)時(shí)的方法
*/
function sendTime() {
clearTimeout(res);
time--;
if (time <= 0) {
time = "獲取驗(yàn)證碼";
sendNode.text(time);
clearTimeout(res);
time = 0;
return;
}
sendNode.text("剩余" + time + "秒");
res = setTimeout("sendTime()", 1000);
}
/**
* 調(diào)用處
*/
$(function() {
sendNode = $("#get_code");
var flg = true;
if ("" != diffTime) {
time = parseInt(diffTime);
sendTime();
}
/**
* 點(diǎn)擊發(fā)送短信,觸發(fā)事件
*/
sendNode.on("click", function() {
if (0 == time) {
var phoneNum = $("input[name='phone']").val();
var code = $("input[name='vcode']").val();
var data = {"code" : code, "phone" : phoneNum};
var err = "";
if (flg == true) {
flg = false;
$.ajax({
"url" : "./tool/sendCode.php",
"type" : "post",
"data" : data,
"dataType" : "json",
"success" : function (msg) {
$(".errmsg").text("");
if (-1 == msg.flg) {
err = msg.err;
if ("code" == msg.type) {
$("#code_err").text(err);
} else if ("phone" == msg.type) {
$("#phone_err").text(err);
} else {
alert("短信發(fā)送失敗,原因:" + err);
}
} else {
time = 60;
sendTime();
alert("發(fā)送驗(yàn)證碼成功!");
}
$("#code_img").click();
flg = true;
}
});
}
return false;
}
});
});
</script>
好了,我們來(lái)走一遍注冊(cè)的流程:
1.填好注冊(cè)信息后,發(fā)送短信驗(yàn)證碼,并成功接收到。

2.填寫好接收到的短信驗(yàn)證碼,完成注冊(cè)。跳轉(zhuǎn)到sms/login.php

整個(gè)短信驗(yàn)證碼開發(fā)教程全部完畢。我已經(jīng)提供了源碼下載。在這里我要特別感謝一下短信寶官網(wǎng),他們公司本著幫助更多用戶的原則, 讓我把代碼上傳到他們的服務(wù)器上。如果還有什么疑問(wèn),可以給我留言,或者找短信寶的在線客服人員。