• python3 用户登录验证的小功能


    用户登录验证,记录一下,还需要修改黑名单不合理

     1 #!/usr/bin/env python3
     2 '''
     3 需求:编写登录接口
     4 1、输入用户名和密码
     5 2、验证用户密码成功后输出欢迎消息
     6 3、3次没有验证通过锁定账户
     7 '''
     8 # user = {'test1':'123','test2':'234','test3':'345'}
     9 #将文件内容转换为字典
    10 with open('user_pass_sql', 'r')as f:
    11     user = dict(line.strip().split(':') for line in f if line)
    12     # print(user)#打印字典user
    13 f.close()
    14 
    15 # print(user.keys())#打印字典user的key
    16 # print(user.values())#打印字典user的values
    17 user_input=input('Name:').strip()#用户输入账户
    18 user_passwd=input('Passwd:')#用户输入密码
    19 
    20 # fblack = open('black_list','r')#打开黑名单文件
    21 # for  len(user_input) == fblack.readlines():#判断用户是否在黑名单
    22 #     print('Account lockout!!!')
    23 for line in open('black_list','r'):
    24     if user_input == line.strip():
    25         print('Account lockout!!!')
    26         break
    27         # fblack.close()#关闭文件
    28     if len(user_input) == 0:#判断用户输入是否为空
    29         print('Users cannot be null!!')
    30         break
    31 else:
    32 # if list(user.keys())[a] == user_input and list(user.values())[a] == user_passwd:
    33     if user_input in user and user_passwd == user[user_input]:#判断用户名和密码是否一致
    34         print('Login successfully!Welcome!!!')
    35     else:
    36         #用户或者密码错误进入循环2次
    37         for i in range(2):
    38             print('User or Passwd error!!')
    39             user_input = input('Name:').strip()
    40             user_passwd = input('Passwd:')
    41             if user_input in user and user_passwd == user[user_input]:#判断用户输入的用户名和密码时候和文件中匹配
    42                 print('Login successfully!Welcome!!!')
    43                 break#跳出循环
    44         else:
    45             black_list = open('black_list','a')#打开文件模式追加
    46             black_list.write('
    ')
    47             black_list.write(user_input) #3次错误之后写入黑名单
    48             black_list.close()#关闭文件
    49             print('Account lockout!!!')

    重新写了一版:

     1 #!/usr/bin/env python3
     2 def black_list():
     3     with open("black_list", "a") as black:
     4         black.write('
    ' + user_input.strip())                  #将变量user_input写到文件中,
    为换行
     5 
     6 with open('user_passwd', 'r') as f:                             #打开用户密码文件
     7     user = dict(line.strip().split(":") for line in f if line)#将文件内容转换为字典
     8 
     9 passwd_error = []                                             #创建密码错误列表,密码错误一次将用户写入列表
    10 user_does_not_exist = []                                      #创建不存在用户列表,不存在用户写入列表
    11 
    12 for i in range(10):                                             #循环10次
    13     user_input = input("Name:").strip()                         #输入账号,strip去除两侧空格
    14     user_passwd = input("Passwd:").strip()                      #输入密码,strip去除两侧空格
    15     with open("black_list","r") as black:                       #打开黑名单文件
    16         if user_input in black:                                 #判断用户是否在黑名单中
    17             print("◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
    "
    18                   "◇◇◇◇◇◇◇◇◇账户被锁定,请与管理员联系!!◇◇◇◇◇◇◇◇
    "
    19                   "◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
    ")
    20             break                                               #退出循环
    21         elif len(user_input) == 0:                              #判断用户输入是否为空格
    22             print("◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
    "
    23                   "◇◇◇◇◇◇◇◇◇◇◇◇用户名不能为空!!◇◇◇◇◇◇◇◇◇◇◇
    "
    24                   "◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
    ")
    25             continue                                             #退出本次循环
    26         else:
    27             if user_input in user and user[user_input] == user_passwd:#判断用户名和密码是否一致
    28                 print("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
    "
    29                       "※※※※※※※※※※※※※欢迎登陆!!※※※※※※※※※※※※※※※
    "
    30                       "※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
    ")
    31                 break
    32             elif user_input not in user:                            #判断用户是都存在
    33                 print("◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
    "
    34                       "◇◇◇◇◇◇◇◇◇◇◇◇用户不存在,请重试!!◇◇◇◇◇◇◇◇◇◇◇◇
    "
    35                       "◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
    ")
    36                 user_does_not_exist.append(user_input)              #用户不存在就写入用户不存在列表中
    37                 if user_does_not_exist.count(user_input) == 5:      #统计用户不在列表中不存在的用户次数,超过5次锁定
    38                     print("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
    "
    39                           "☆☆☆☆☆☆☆☆☆☆☆尝试次数过多,账户锁定!!☆☆☆☆☆☆☆☆☆☆☆
    "
    40                           "☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
    ")
    41                     black_list()                                    #调用函数black_list
    42                     break
    43             else:
    44                 print("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
    "
    45                       "☆☆☆☆☆☆☆☆☆☆☆☆☆密码错误!!☆☆☆☆☆☆☆☆☆☆☆☆☆☆
    "
    46                       "☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
    ")
    47                 passwd_error.append(user_input)                     #将密码错误用户写入密码错误列表中
    48                 if passwd_error.count(user_input) == 3:             #统计密码错误用户是否超过3次
    49                     print("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
    "
    50                           "〓〓〓〓〓〓〓〓〓〓密码错误3次,账户锁定,请联系管理员!!〓〓〓〓〓〓〓〓〓〓
    "
    51                           "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
    ")
    52                     black_list()                                    #调用函数black_list
    53                     break
    54                 else:
    55                     continue                                        #退出当前循环
    56 else:
    57     print("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
    "
    58           "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓尝试次数过多!!〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
    "
    59           "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
    ")

     再修改一下:

     
     1 #!/usr/bin/env python3
     2 def black_list():
     3     with open("black_list", "a") as black:
     4         black.write('
    '+user_input.strip())                  #将变量user_input写到文件中,
    为换行
     5 
     6 with open('user_passwd', 'r') as f:                             #打开用户密码文件
     7     user = dict(line.strip().split(":") for line in f if line)#将文件内容转换为字典
     8 
     9 passwd_error = []                                             #创建密码错误列表,密码错误一次将用户写入列表
    10 user_does_not_exist = []                                      #创建不存在用户列表,不存在用户写入列表
    11 
    12 break_flag = False                                            #默认设置为False,用来退出多层循环
    13 continue_flag = False
    14 for i in range(10):                                             #循环10次
    15     user_input = input("Name:").strip()                         #输入账号,strip去除两侧空格
    16     user_passwd = input("Passwd:").strip()                      #输入密码,strip去除两侧空格
    17     with open("black_list","r") as black:                       #打开黑名单文件
    18         for line in black:
    19             if user_input == line.strip():                         #判断用户是否在黑名单中
    20                 Tips = '账户%s被锁定,请与管理员联系!'%user_input      #定义字符串,将用户输入变量带入字符串,%s代替用户输入
    21                 print(Tips.center(30,'*'))                          #字符串center方法,字符串居中,30为总长度,空白处用*代替
    22                 break_flag = True                                   #将break_flag的值重新定义
    23                 break                                               #退出循环
    24         if break_flag == True:                                      #判断break_flag的值是否为True
    25             break
    26         if len(user_input) == 0 or len(user_passwd) == 0:      #判断用户输入是否为空格
    27             Tips = '用户名或密码不能为空!'
    28             print(Tips.center(30,'*'))
    29             continue                                         #退出本次循环
    30     if user_input in user and user[user_input] == user_passwd:#判断用户名和密码是否一致
    31         Tips = '欢迎用户%s登录系统'%user_input
    32         print(Tips.center(30,'*'))
    33         break
    34     elif user_input not in user:                            #判断用户是都存在
    35         Tips = '用户%s不存在,请重试!'%user_input
    36         print(Tips.center(30,'*'))
    37         user_does_not_exist.append(user_input)              #用户不存在就写入用户不存在列表中
    38         if user_does_not_exist.count(user_input) == 5:      #统计用户不在列表中不存在的用户次数,超过5次锁定
    39             Tips = '尝试次数过多,账户%s锁定!'%user_input
    40             print(Tips.center(30,'*'))
    41             black_list()                                    #调用函数black_list
    42             break
    43     else:
    44         Tips = '密码错误!'
    45         print(Tips.center(30,'*'))
    46         passwd_error.append(user_input)                     #将密码错误用户写入密码错误列表中
    47         if passwd_error.count(user_input) == 3:             #统计密码错误用户是否超过3次
    48             Tips = '密码错误3次,账户%s锁定,请联系管理员!'%user_input
    49             print(Tips.center(30,'*'))
    50             black_list()                                    #调用函数black_list
    51             break
    52         else:
    53             continue                                       #退出当前循环
    54 else:
    55     Tips = '尝试次数过多!'
    56     print(Tips.center(30,'*'))
  • 相关阅读:
    HTML5边玩边学
    全面理解javascript的caller,callee,call,apply概念
    什么是HTTP Headers?
    Jquery的$命名冲突:
    jQuery 核心 noConflict() 方法
    js 两个小括号 ()() 的用法
    前端工程师的编码遭遇战
    Canvas之图像与文字
    Internet Explorer 9.0 新功能介绍
    firebug1.7调试实用技巧指南—web前端开发七武器
  • 原文地址:https://www.cnblogs.com/xieyi5420/p/10396271.html
Copyright © 2020-2023  润新知