js記錄密碼出錯次數並鎖定賬號30分鐘
下面要說的是網站中一個常見的功能,在客人使用抵用券或者其他來支付的時候需要驗證密碼,如果密碼輸入錯誤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/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,如有問題,可以通過以下郵箱地址williamningdong@gmail.com
聯絡我,非常感謝。
相關文章
- python 小程式,輸錯三次密碼鎖定賬戶Python密碼
- 設定讓TortoiseGit記住賬號和密碼Git密碼
- mongodb設定賬號密碼的方法MongoDB密碼
- Discuz教程:密碼錯誤次數過多,請15 分鐘後重新登入 的修改方法密碼
- win10系統設定登入錯誤次數及鎖定賬戶的方法Win10
- MSSQL匯出所有login賬號和密碼SQL密碼
- 後臺密碼錯誤超過5次被限制60分鐘登入密碼
- tasklist 遠端獲取程式報錯賬號密碼錯誤密碼
- 寶塔皮膚賬號密碼錯誤怎麼重置密碼
- 帝國CMS網站登入次數超過5次賬號被鎖定網站
- 賬號密碼登入介面密碼
- 輕鬆設定win8賬號密碼的技巧密碼
- Android-實現記住賬號密碼功能Android密碼
- Linux 清除 Git 賬號密碼LinuxGit密碼
- elasticsearch加賬號密碼登入Elasticsearch密碼
- 使用賬號密碼來操作github? NO!密碼Github
- es 的 url 加入賬號密碼密碼
- linux 賬號密碼安全加固Linux密碼
- 萬能賬號密碼使用min密碼
- 帝國cms密碼忘記,帝國cms網站忘記登陸賬號密碼密碼網站
- git 修改之前提交記錄的某幾次記錄的賬號和郵箱Git
- 記錄一次定時器報錯定時器
- 5分鐘造出好記又難猜的密碼!密碼
- win10 ftp如何清除賬號密碼_win10怎麼清理自己ftp賬號密碼Win10FTP密碼
- 安卓實現賬號密碼儲存安卓密碼
- MySQL修改賬號密碼方法大全MySql密碼
- sql登入賬號密碼比對SQL密碼
- 蘋果賬號真需要兩個密碼蘋果密碼
- git儲存賬號密碼到本地Git密碼
- oracle 11g 密碼不過期、不限制錯誤次數設定Oracle密碼
- 鴻蒙 Next 密碼保險箱:賬號密碼管理全流程鴻蒙密碼
- kali 忘記賬戶密碼密碼
- python輸入錯誤密碼使用者鎖定Python密碼
- 記錄一次資料儲存出錯
- win10系統為什麼微軟賬號登陸一直顯示賬號密碼錯誤Win10微軟密碼
- 直播商城原始碼,記一次 js隨機密碼原始碼JS隨機密碼
- php短視訊原始碼,設定賬號密碼時不能包含特殊的字元PHP原始碼密碼字元
- git本地修改賬號密碼及郵箱Git密碼