模擬三次登陸並鎖定賬號 Python基礎

2021-09-28 19:51:16 字數 3066 閱讀 8399

在剛開始學習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...