下面要說的是網站中一個常見的功能,在客人使用抵用券或者其他來支付的時候需要驗證密碼,如果密碼輸入錯誤5次就鎖定,不在讓客人使用抵用券了,在這裡是使用的cookie來實作的,不太嚴謹。
思路很簡單,在輸入密碼錯誤的時候,使用cookie儲存2個變量,一個是辨別目前客人是否已經被鎖定,這個隻儲存30分鐘,一個是記錄輸入錯誤次數,這個可以長時間儲存。函數根據是否鎖定彈出相應的資訊
if(輸入密碼錯誤)
{
if(鎖定辨別為false)
{
儲存出錯次數為1;
傳回鎖定狀态為false;
}
else
取出出錯次數;
if(出錯次數小于5)
{
累加出錯次數并儲存;
傳回鎖定狀态為false;
}
else
儲存鎖定狀态辨別30分鐘;
設定出錯次數為0并儲存;
傳回鎖定狀态為true
}
}
else
傳回鎖定狀态為false
}
function logInputFaile() {
//var count = document.getElementById("userErrCoun").value;
//var lockTim = document.getElementById("userPinLocTim").value;
var uidErrCoun = document.getElementById("Userid").value + "userErrCoun";
var PinLoc = document.getElementById("Userid").value + "userPinLocTim";
var count = getCookie(uidErrCoun);
var lockTim = getCookie(PinLoc);
if (lockTim == null || lockTim == "") { //未鎖定
var expireDate = new Date();
expireDate.setTime(expireDate.getTime() + 24 * 60 * 60 * 1000);
if (count == null || count=="") { //第一次輸入錯誤
setCookie(uidErrCoun, 1, expireDate.toGMTString(), "/");
return false;
}
else {
var expireDate = new Date();
expireDate.setTime(expireDate.getTime() + 24 * 60 * 60 * 1000);
var count = getCookie(uidErrCoun);
if (count <= 5) { //出錯小于5次
setCookie(uidErrCoun, ++count, expireDate.toGMTString(), "/");
return false;
}
else { //大于5次,鎖定賬号
var expireDate = new Date();
expireDate.setTime(expireDate.getTime() + 30 * 60 * 1000);
setCookie(PinLoc, "userPinLocTim", expireDate.toGMTString(), "/");
deleteCookie(uidErrCoun, "/");
return true;
}
}
}
else {
return true;
}
}
這裡很想說明一下設定cookie的過期時間,本來想找到一個類似于adddays()這樣的方法,但是javascript中沒有類似的方法,隻有一個setTime,并且要和getTime搭配之用,其他的方法如setDate(day)是設定目前時間中的天,這個和我們的目的有點差别,一般我們想要設定目前這個cookie多長時間内過期,而不是在一個具體的時間點過期,是以大多數時間我們的思維是:儲存使用者賬号50天,而不是從現在開始計算好50天,然後再目前時間基礎上設定天數為50,并且還要考慮50天之後是幾号,月份是多少,年份是多少,如果閏年就更麻煩了。
dateObject.getTime():getTime() 方法可傳回指定的日期dateObject距 1970 年 1 月 1 日之間的毫秒數。
dateObject.setTime(millisec):setTime() 方法以時間據 GMT 時間 1970 年 1 月 1 日午夜之間的毫秒數設定 Date 對象。
是以隻要擷取目前時間距離格林威治時間的毫秒數,再加上想要過期的時間的毫秒數,在使用setTime設定就可以得到正确的過期時間。
最後調用這個函數,如果傳回true就證明鎖定了,彈出提示,為false證明未被鎖定。代碼如下: 方法中用到的工具方法setCookie和getCookie是javascript中讀寫cookie的包裝方法,原型請參考另外一篇随筆
javascript讀寫cookie作者:
Tyler Ning出處:
http://www.cnblogs.com/tylerdonet/本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,如有問題,可以通過以下郵箱位址
[email protected]聯系我,非常感謝。