首頁 > web前端 > js教程 > 主體

基於JavaScript簡訊驗證碼如何實作_javascript技巧

WBOY
發布: 2016-05-16 15:18:33
原創
2340 人瀏覽過

我們在使用行動、電信等業者網路營業廳的時候,為確保業務的完整和正確性,經常會需要用到簡訊的驗證碼。最近因為某省業務需要,也做了個類似的功能。

原理很簡單,就是在使用者點擊"取得驗證碼"的時候,Ajax取得一串固定位數的數字,然後寫資料庫發短信,寫Cookie設定驗證碼的有效期限。

JS請求驗證碼如下:

$.ajax({
type: "GET",
url: "../Ajax/smsrandcodetest.ashx?phone=" + phone.val() + "&smsCodeRand=" + num,
success: function(result) {
if (result == "Y") {
alert("验证码已发送至您输入的手机号!有效期5分钟");
RemainTime();
}
else {
alert("验证码获取失败!请重新获取");
}
},
error: function() { alert("error"); }
});
//获取6位随机验证码
function random() {
var num = "";
for (i = 0; i < 6; i++) {
num = num + Math.floor(Math.random() * 10);
}
return num;
}
//验证码有效期倒计时
function RemainTime() {
var iSecond;
var sSecond = "", sTime = "";
if (iTime >= 0) {
iSecond = parseInt(iTime % 300);
if (iSecond >= 0) {
sSecond = iTime + "秒";
}
sTime = "<span style='color:darkorange;font-size:13px;'>" + sSecond + "</span>";
if (iTime == 0) {
clearTimeout(Account);
sTime = "<span style='color:red;font-size:12px;'>验证码已过期</span>";
}
else {
Account = setTimeout("RemainTime()", 1000);
}
iTime = iTime - 1;
}
$("#endtime").html(sTime);
} 
登入後複製

前端要處理的工作基本上如上,現在要在HttpHandler中加入邏輯了,為了防止Js產生的驗證碼不符規則,我們在後端重新產生一次:

if (smscoderand.Length != 6) //如果JS生成的随机码不符,则用C#生成随机码
{
smscoderand = GetRandom();
}
//写短信数据,发SMS
//写Cookie,设置验证码有效期,比如5分钟
//注:如果以上都处理成功,返回"Y",处理失败,返回"N"
登入後複製

這裡為了方便,驗證碼的有效期限驗證就用Cookie來完成。在業務提交的時候,會取得客戶端的這個Cookie,看是否存在,如果不存在肯定就是過期了。如果後續業務擴展可能會考慮加上資料庫的有效期驗證,以及一些其它的規則,比如一小時、一天內限制發送驗證碼的條數(總不能讓你無限制的發送短信吧) 等等。

以上所述是針對JavaScript簡訊驗證碼如何實現的詳細介紹,希望對大家有幫助。

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板