Python实现带验证码机制的用户名密码登录系统
本文提供Python实现的登录注册完整代码。系统首次运行自动生成user.txt存储用户字典。支持新用户自动注册,包含用户名非空及无空格校验。核心功能为密码错误累计4次后触发4位随机验证码机制,通过VBS弹窗确认。验证码错误则倒计时3秒后退出程序,正确则重置错误计数并继续登录循环。
本文分享了一段使用Python编写的用户名与密码登录程序的具体实现代码,供读者参考学习。
功能
系统支持用户登录与注册功能。当密码输入错误累计达到指定次数后,将触发验证码确认流程。
说明
程序首次运行时,会自动在当前目录生成一个名为user的文本文档,用于存储包含用户名及对应密码的字典数据。
当用户输入用户名时,若该用户名在系统中不存在,程序将自动执行注册流程,以输入的用户名创建新账户。
在输入密码环节,若连续输错4次,程序将生成一个4位随机验证码,并通过VBS脚本方式弹出提示框。若用户输入的验证码与生成值不一致,程序将直接退出;若验证码正确,则重置错误计数并重新执行主登录循环。
代码
from os import system
from sys import exit
from random import randint
from time import sleep
user={'root':'88888888'}
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("{'root':'88888888'}")
f.close
user={'root':'88888888'}
#main
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: #用户存在 -> 登录 -> 确认密码是否正确
#错4次后验证码确认
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因错误次数过多,进行验证码确认')
chack[0]=str(randint(999,10000)) #生成验证码
#写入到VBS文件,并弹出
f=open('chack.vbs','w')
f.write('msgbox("验证码>'+str(chack[0])+'<")')
f.close()
system('start chack.vbs')
#验证验证码
chack[1]=str(input('请输入验证码>'))
if chack[0]!=chack[1]:
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
input('登录成功...')以上即为本文分享的全部内容,希望这段代码能对读者的Python学习有所帮助,同时也欢迎大家对本站提供更多支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









