#! /uer/bin/python3.5
# -*- coding: utf-8 -*-
import hashlib,json,re
def get_md5(user,password):
md5 = hashlib.md5()
md5.update((user+password+"The*Sale").encode('utf-8'))
return md5.hexdigest()
mail_gesi = ["qq.com","gmail.com","163.com"]
def register():
with open("date.txt",'r') as f:
user_date = json.load(f)
with open("find_password_date.txt",'r') as a:
find_password = json.load(a)
while True:
mail_list = [x for x in find_password.values()] # 获取之前用户输入过的所有邮箱
user = str(input("New User: "))
password = str(input("Password: "))
password_chack = [i for i in password if i.isalpha()] # 判断 password 中是否有英文字母
mail = str(input("Mail: "))
save_md5 = get_md5(user,password) # 将用户输入的密码加密
mail_split = mail.split("@")
re_mail = re.findall(r"[^a-z0-9]",mail_split[0])
if user in user_date:
print("'%s' 已存在,请重新输入!" % user)
continue
elif len(password) < 6 or password_chack == []: # 判断密码是否大于6个和是否带有英文字母
print("密码太弱,请输入6位以上的并且至少有一个英文字母")
elif mail in mail_list: # 判断有没有被其他用户输入过
print("此邮箱已注册!")
elif re_mail != [] or mail_split[-1] not in mail_gesi: # 判断邮箱格式
print("请输入正确的邮箱")
else:
user_date[user]=save_md5
find_password[user]=mail
print("'%s' 创建成功!" % user)
with open("date.txt",'w') as s:
json.dump(user_date,s)
with open("find_password_date.txt",'w') as x:
json.dump(find_password,x)
break
with open("find_password_date.txt",'w') as x:
json.dump(find_password,x)
break
找回密码(Find_password.py)
# -*- coding: utf-8 -*-
import json
from registered import *
def Find_password():
with open("find_password_date.txt",'r') as f:
mail_date = json.load(f)
with open("date.txt",'r') as d:
user_date = json.load(d)
while True:
user = str(input("User: "))
mail = str(input("Mail: "))
if user in mail_date and mail == mail_date[user]:
while True:
new_password = str(input("New Password: "))
enter_password = str(input("Enter Password: "))
if new_password == enter_password:
get_new_md5 = get_md5(user,new_password)
user_date[user]=get_new_md5
print("密码修改成功!")
with open("date.txt",'w') as x:
json.dump(user_date,x)
break
else:
print("两次输入的密码不相同,请重新输入!")
break
else:
print("用户名或错误!")
登录(login.py)
# -*- codint: utf-8 -*-
import json
from registered import *
from Find_password import *
while True:
print("User Login!")
with open("date.txt","r") as f:
user_date = json.load(f)
user = str(input("User Name: "))
password = str(input("Password: "))
save_md5 = get_md5(user,password)
if user not in user_date:
print("用户名: '%s' 不存在,请注册!" % user)
print("输入'q'退出,输入'a'继续注册")
sele = str(input("q or a: "))
if sele == "q":
print("已退出!")
break
print("REGISTERED!")
register()
else:
if user in user_date and user_date[user]==save_md5:
print("Login success!")
print("Welcome %s" % user)
break
else:
print("密码或帐号错误,是否需要找回密码?(y/n)")
enter = str(input(">>> "))
if enter == "Y" or enter == "y":
Find_password()
else:
continue
呆呆的设计师
注册(registered.py)
找回密码(Find_password.py)
登录(login.py)
还需要创建两个txt文本储存数据:date.txt find_password_date.txt
date.txt的内容:{"root": "63a9f0ea7bb98050796b649e85481845"}
find_password_date.txt内容:{"root": "1473018671@gmail.com"}
最后运行login.py