志存高远的zxs 2023-02-16 22:04 采纳率: 26.7%
浏览 28
已结题

python如何实现注册登录并限制用户个数功能?

python如何实现注册登录并限制用户个数功能?求解答!
现在已经实现了注册与登录功能,但有一个问题,用户若是忘记了密码就可以重新注册一个用户继续,没法实现登录与注册的初衷了。希望各位提出高见,或是在原代码上增修,或是有更好的代码也可以!万分感谢!

from os import system
from sys import exit
from random import randint
from time import sleep
user={'Administrator':'123456'}
error_time=4
mode=False
chack=[None,None]
user_name=''
user_passwd=[None,None]
try:
   f=open('user.txt','r')
   user=eval(f.read())
   f.close()
except:
   f=open('user.txt','w')
   f.write("{'Administrator':'123456'}")
   f.close()
   user={'Administrator':'123456'}
while True:
   user_name=str(input('请输入用户名>'))
   if user_name not in user:
          print("用户不存在,将执行注册操作。")
          if ' ' in user_name:
             print('\aErr: 用户名中不能有空格')
          elif user_name=='':
             print('\aErr: 用户名不能为空')
          else:    
             while True:
                user_passwd[0]=str(input('请设置密码>'))
                if ' ' in str(user_passwd[0]):
                   print('\aErr: 密码中不能含有空格。')
                elif user_passwd[0]=='':
                   print('\aErr: 密码不能为空。')
                elif len(user_passwd[0])<6:
                   print('\aErr: 密码长度太短,至少6位。')
                else:
                   user_passwd[1]=str(input('请再次输入密码>'))
                   if user_passwd[0]!=user_passwd[1]:
                      print('\aErr: 两次输入的密码不一致。')
                   else:
                      print('注册成功!\n\n请重新登录:')
                      user[user_name]=user_passwd[0]            
                      f=open('user.txt','w')
                      f.write(str(user))
                      f.close()
                      break
   else:    
      while error_time!=0:
         user_passwd[0]=input('请输入密码 4次机会/'+str(error_time)+'>')
         if user_passwd[0]!=user[user_name]:
            print('\aErr: 密码错误')
            error_time=error_time-1
         else:
            mode=True
            break
      else:
         print('\n\a\a因错误次数过多,进行验证码确认')
         import random
         mc="0"
         mi="1"
         while mc!=mi:
             mc=''  
             for i in range(0,6):
                 ms=random.randint(0,9) 
                 mc+=str(ms)
             print("将会在15秒内发送验证码,请耐心等待...")
             eh=random.randint(1,15)
             time.sleep(eh)
             print(mc)
             mi=input("请正确输入以上验证码,填写错误则将重新发送:")
         if mi!=mc:
            print('\aErr: 验证码错误!')
            for i in range(3,-1,-1):
               print('\b'*23+'程序将在 '+str(i+1)+' 秒后退出...',end='',flush=True)
               sleep(1)
            exit(0)
         else:
            error_time=4
   if mode==True:
      break
print('登录成功...')
time.sleep(3)
  • 写回答

1条回答 默认 最新

  • 菜鸟才能学的更多 2023-02-16 22:52
    关注
    
    import os
    import sys
    import time
    
    MAX_USERS = 10  # 最大用户数
    user_file = 'user.txt'  # 存储用户信息的文件
    
    # 读取已注册的用户信息
    try:
        with open(user_file, 'r') as f:
            user_dict = eval(f.read())
    except FileNotFoundError:
        with open(user_file, 'w') as f:
            f.write("{'Administrator': '123456'}")
        user_dict = {'Administrator': '123456'}
    
    # 登录或注册
    while True:
        user_name = input('请输入用户名>')
        if user_name == '':
            print('\aErr: 用户名不能为空')
            continue
        elif user_name not in user_dict:
            # 注册新用户
            if len(user_dict) >= MAX_USERS:
                print('用户数量已达到最大值,无法继续注册')
                break
            print('用户不存在,将执行注册操作。')
            user_passwd = input('请设置密码>')
            if ' ' in user_passwd:
                print('\aErr: 密码中不能含有空格。')
            elif len(user_passwd) < 6:
                print('\aErr: 密码长度太短,至少6位。')
            else:
                user_dict[user_name] = user_passwd
                with open(user_file, 'w') as f:
                    f.write(str(user_dict))
                print('注册成功!\n\n请重新登录:')
        else:
            # 登录已注册用户
            error_time = 4
            while error_time > 0:
                user_passwd = input('请输入密码 4次机会/' + str(error_time) + '>')
                if user_passwd != user_dict[user_name]:
                    print('\aErr: 密码错误')
                    error_time -= 1
                else:
                    print('登录成功...')
                    time.sleep(3)
                    break
            else:
                print('\n\a\a因错误次数过多,进行验证码确认')
                mc = ''
                while not mc.isdigit() or len(mc) != 6:
                    mc = input('请正确输入以上验证码(6位数字)>')
                if mc != '123456':
                    print('\aErr: 验证码错误!')
                    for i in range(3, -1, -1):
                        print('\b' * 23 + '程序将在 ' + str(i + 1) + ' 秒后退出...', end='', flush=True)
                        time.sleep(1)
                    sys.exit(0)
                else:
                    print('登录成功...')
                    time.sleep(3)
                    break
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月3日
  • 已采纳回答 2月23日
  • 创建了问题 2月16日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程