在剛開始學習python幾天的時候,就碰到乙個模擬登陸的題目:輸入賬號密碼,連續錯誤三次就將賬號鎖定,而且在下一次開啟執行的時候,顯示的是賬戶鎖定,而不是又輸入賬號密碼
納尼,我曉得做個錘子,偶才學到判斷和迴圈,你要偶來做這個,還是闊以鎖定賬號滴,偶的個乖乖!
然後我就這樣寫交了上去
# -*- coding: utf-8 -*-
name =
'lxl'
password =
123passed_authentication =
false
for i in
range(3
):username =
input
('請輸入您的賬號:'
) password =
input
('請輸入你的密碼:'
)if username == name and password == password:
print
('歡迎 %s 登陸...'
% name)
passed_authentication =
true
# 真,成立
break
# 跳出迴圈,中斷
else
:print
('您輸入的賬號或者密碼錯誤')if
not passed_authentication:
# 只有在true的情況下,條件成立
print
("連續三次錯誤,該賬戶已被鎖定"
)
這樣子寫的缺點很明顯,就是重新執行一下一樣可以再次驗證
一直學到了檔案流和json,才知道怎麼實現三次鎖定賬戶:我們知道,賬號密碼等資訊都是儲存在資料庫中,而我還沒有學到資料庫,只能用檔案來代替資料庫了,嘿嘿
我覺得我做的還是有很多地方不好,希望各位能給點建議,學習學習
首先得註冊乙個賬號密碼:(這樣寫還有乙個很嚴重的缺陷,只能弄乙個賬號,再次註冊把原來的覆蓋了)
# -*- coding: utf-8 -*-
import random
import json
username =
''for i in
range(5
):add = random.choice(
[random.randrange(10)
])username +=
str(add)
print
("您申請的賬號:%s"
%username)
passed_authentication =
false
for i in
range(3
):password =
input
('請輸入你的密碼:'
) password1 =
input
('請再次輸入你的密碼:'
)if password == password1:
dict
=with
open
('json'
,'w'
, encoding=
'utf8'
)as fb:
fb.write(json.dumps(
dict))
passed_authentication =
true
# 真,成立
break
# 跳出迴圈,中斷
else
:print
("您兩次輸入的密碼不同")if
not passed_authentication:
# 只有在true的情況下,條件成立
print
("你逗我玩呢"
)
驗證登陸:
# -*- coding: utf-8 -*-
import json
with
open
('json'
,'r'
,encoding=
'utf8'
)as r:
reads = json.loads(r.read())
name = reads[
'name'
] password = reads[
'password'
] state = reads[
'state'
]passed_authentication =
false
for i in
range(3
):if state ==
'normal'
:pass
else
:print
("您的賬號已被鎖定"
)break
username =
input
('請輸入您的賬號:'
) password =
input
('請輸入你的密碼:'
)if username == name and password == password:
print
('歡迎 %s 登陸...'
% name)
passed_authentication =
true
# 真,成立
break
# 跳出迴圈,中斷
else
:print
('您輸入的賬號或者密碼錯誤')if
not passed_authentication:
# 只有在true的情況下,條件成立
dict
=with
open
('json'
,'w'
, encoding=
'utf8'
)as fb:
fb.write(json.dumps(
dict))
print
("您的賬戶已被鎖定"
)
做出來的四不像,弄得我自己都看不下去了,願各位大佬幫幫忙,完善一下這個鬼東東 登陸三次失敗鎖定不給登陸
這裡主要的實現方式是資料庫表 當然這種方式適合練練手,還有一種更簡便的就是用快取實現,節省很多。基本邏輯是登陸失敗累計次數。三次丟擲限制定語。限定根據當前時間和資料庫鎖定時間進行判斷是否解鎖。最後資料狀態修改為0.public yhxx getlogin string username,string...
linux設定登陸n次失敗鎖定賬號
本文要實現的功能 如果有人惡意嘗試破解你的伺服器密碼,那麼這個功能就能幫你起到一定的作用,當嘗試密碼錯誤超過設定的次數後,就會鎖定該賬戶多長時間 自行設定 時間過後即可自行解鎖,這樣可以增加攻擊者的成本。伺服器系統 centos6.5 centos其他版本應該也是可以的,請自行測試 cp etc p...
linux設定登陸n次失敗鎖定賬號
前言 為了防止黑客惡意嘗試破解你的伺服器密碼,需要進行一定的防護措施 宣告此設定在centos7系統上操作配置 遠端登陸限制配置auth required pam tally2.so onerr fail deny 5 unlock time 300 even deny root root unlo...