pythonは簡単なユーザーパスワードログイン制御を実現する(3回入力するとユーザーをロックする)
13136 ワード
問題の説明
私たちはよくいくつかのウェブサイトにログインしたとき、私たちが何度もパスワードを間違えたら、私たちのアカウントがロックされていることに気づきました.このプロセスはどのように実現されていますか?本プログラムは主に以下の3つの事柄を解決する.ユーザー名パスワード2を入力.認証に成功し、ウェルカムメッセージ3が表示されます.3回間違えてロック
解決策
いくつかの改善を加える
多くのサイトでは、最近のログイン時間と今回のログイン時間の間隔が24時間より大きい場合は、上記のコードに処理時間の判断を追加し、jsonファイルにtimeフィールドを追加して時間を格納するだけで、3回のログイン機会を取得し続けるようです.ファイルでグリニッジ時間とローカル時間の置き換えが使用されていることに注意してください.
転載は出典を明記してください:CSDN:上の階の小さい宇_home:http://blog.csdn.net/u014265347
私たちはよくいくつかのウェブサイトにログインしたとき、私たちが何度もパスワードを間違えたら、私たちのアカウントがロックされていることに気づきました.このプロセスはどのように実現されていますか?本プログラムは主に以下の3つの事柄を解決する.ユーザー名パスワード2を入力.認証に成功し、ウェルカムメッセージ3が表示されます.3回間違えてロック
解決策
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# Time: 17-11-18 8:45
# Author: sty
# File: login_judge.py
# 1.
# 2.
# 3.
import json
# json
def utilize():
data = [
{'usr': 'sty', 'pwd': '123', 'lock': 0, 'cnt': 0},
{'usr': 'bat', 'pwd': 'alibaba', 'lock': 0, 'cnt': 0}
]
with open('data.json', 'w') as f:
json.dump(data, f)
# login
def login():
with open('data.json', 'r') as f:
res = json.load(f)
while True:
new = []
user_name = input('user_name:')
user_pwd = input('user_pwd:')
flag = 0
# flag: 0 1 2 ,
for user in res:
if user['usr'] == user_name:
flag = 2
if user['pwd'] == user_pwd:
if user['lock'] == 1:
print('you have been locked')
else:
flag = 1
user['cnt'] = 0
print("welcome to file")
else:
if user['lock'] == 1:
print('you have been locked')
else:
user['cnt'] = user['cnt'] + 1
# user
if user['cnt'] == 3:
user['lock'] = 1
new.append(user)
#
with open('data.json', 'w') as f:
json.dump(new, f)
if flag == 1:
break
if flag == 0:
print("this user is not exist")
if __name__ == "__main__":
# json
# utilize()
login()
いくつかの改善を加える
多くのサイトでは、最近のログイン時間と今回のログイン時間の間隔が24時間より大きい場合は、上記のコードに処理時間の判断を追加し、jsonファイルにtimeフィールドを追加して時間を格納するだけで、3回のログイン機会を取得し続けるようです.ファイルでグリニッジ時間とローカル時間の置き換えが使用されていることに注意してください.
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# Time: 17-11-18 8:45
# Author: sty
# File: login_judge.py
# 1.
# 2.
# 3.
import json
import time
from datetime import datetime
# json
def utilize():
data = [
{'usr': 'sty', 'pwd': '123', 'lock': 0, 'cnt': 0, 'time': '2017-01-01 0:0:0'},
{'usr': 'bat', 'pwd': 'alibaba', 'lock': 0, 'cnt': 0, 'time': '2017-01-01 0:0:0'}
]
with open('data.json', 'w') as f:
json.dump(data, f)
#
def time_judge(start_time, end_time):
day = (end_time - start_time).days
return day
# UTC (+8:00)
def utc2local(utc_st):
now_stamp = time.time()
local_time = datetime.fromtimestamp(now_stamp)
utc_time = datetime.utcfromtimestamp(now_stamp)
offset = local_time - utc_time
local_st = utc_st + offset
return local_st
# UTC (-8:00)
def local2utc(local_st):
time_struct = time.mktime(local_st.timetuple())
utc_st = datetime.utcfromtimestamp(time_struct)
return utc_st
# login
def login():
with open('data.json', 'r') as f:
res = json.load(f)
while True:
new = []
user_name = input('user_name:')
user_pwd = input('user_pwd:')
flag = 0
# flag: 0 1 2 ,
for user in res:
if user['usr'] == user_name:
flag = 2
last_time = datetime.strptime(user['time'],"%Y-%m-%d %H:%M:%S")
now_time = utc2local(datetime.utcnow())
#
if time_judge(last_time, now_time) > 1:
user['lock'] = 0
user['cnt'] = 0
if user['pwd'] == user_pwd:
if user['lock'] == 1:
print('you have been locked')
else:
flag = 1
user['cnt'] = 0
print("welcome to file")
else:
if user['lock'] == 1:
print('you have been locked')
else:
user['cnt'] = user['cnt'] + 1
# user
if user['cnt'] == 3:
user['lock'] = 1
user['time'] = now_time.strftime("%Y-%m-%d %H:%M:%S") #
new.append(user)
#
#print(new)
with open('data.json', 'w') as f:
json.dump(new, f)
if flag == 1:
break
if flag == 0:
print("this user is not exist")
if __name__ == "__main__":
# json
#utilize()
login()
転載は出典を明記してください:CSDN:上の階の小さい宇_home:http://blog.csdn.net/u014265347