欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于JavaScript短信驗(yàn)證碼如何實(shí)現(xiàn)

 更新時間:2016年01月24日 11:46:58   作者:牦牛  
我們在使用移動、電信等運(yùn)營商網(wǎng)上營業(yè)廳的時候,為確保業(yè)務(wù)的完整和正確性,經(jīng)常會需要用到短信的驗(yàn)證碼。最近因?yàn)槟呈I(yè)務(wù)需要,也做了個類似的功能

我們在使用移動、電信等運(yùn)營商網(wǎng)上營業(yè)廳的時候,為確保業(yè)務(wù)的完整和正確性,經(jīng)常會需要用到短信的驗(yàn)證碼。最近因?yàn)槟呈I(yè)務(wù)需要,也做了個類似的功能。

原理很簡單,就是在用戶點(diǎn)擊"獲取驗(yàn)證碼"的時候,Ajax獲取一串固定位數(shù)的數(shù)字,然后寫數(shù)據(jù)庫發(fā)短信,寫Cookie設(shè)置驗(yàn)證碼的有效期。

JS請求驗(yàn)證碼如下:

$.ajax({
type: "GET",
url: "../Ajax/smsrandcodetest.ashx?phone=" + phone.val() + "&smsCodeRand=" + num,
success: function(result) {
if (result == "Y") {
alert("驗(yàn)證碼已發(fā)送至您輸入的手機(jī)號!有效期5分鐘");
RemainTime();
}
else {
alert("驗(yàn)證碼獲取失??!請重新獲取");
}
},
error: function() { alert("error"); }
});
//獲取6位隨機(jī)驗(yàn)證碼
function random() {
var num = "";
for (i = 0; i < 6; i++) {
num = num + Math.floor(Math.random() * 10);
}
return num;
}
//驗(yàn)證碼有效期倒計(jì)時
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;'>驗(yàn)證碼已過期</span>";
}
else {
Account = setTimeout("RemainTime()", 1000);
}
iTime = iTime - 1;
}
$("#endtime").html(sTime);
} 

前端要處理的工作基本如上,現(xiàn)在要在HttpHandler中添加邏輯了,為了防止Js生成的驗(yàn)證碼不符規(guī)則,我們在后端重新生成一次:

if (smscoderand.Length != 6) //如果JS生成的隨機(jī)碼不符,則用C#生成隨機(jī)碼
{
smscoderand = GetRandom();
}
//寫短信數(shù)據(jù),發(fā)SMS
//寫Cookie,設(shè)置驗(yàn)證碼有效期,比如5分鐘
//注:如果以上都處理成功,返回"Y",處理失敗,返回"N"

這里為了方便,驗(yàn)證碼的有效期驗(yàn)證就用Cookie來完成。在業(yè)務(wù)提交的時候,會獲取客戶端的這個Cookie,看是否存在,如果不存在肯定就是過期了。如果后續(xù)業(yè)務(wù)擴(kuò)展可能會考慮加上數(shù)據(jù)庫的有效期驗(yàn)證,以及一些其它的規(guī)則,比如一小時、一天內(nèi)限制發(fā)送驗(yàn)證碼的條數(shù)(總不能讓你無限制的發(fā)送短信吧) 等等。

以上所述是針對JavaScript短信驗(yàn)證碼如何實(shí)現(xiàn)的詳細(xì)介紹,希望對大家有所幫助。

相關(guān)文章

最新評論