我正试图为我的服务器应用程序创建一个登录表单,却意外地发现了一个看不见的错误(最糟糕的一种)。我有一个trys变量,每当用户输入用户名错误时,该变量将递增1。当尝试变量达到3时,程序应执行block()函数。我的问题是它没有
我所有的.txt文件都是空白的,所以那里没有错误,一切看起来都很好。请帮帮我,因为我在拔头发
代码如下:
import socket
import time
import sys
import os
tries = 0
def server():
def block():
#get host ip
ipBlock = socket.gethostbyname(socket.gethostname())
#create black list
ipBlackList = open("ipBlackList.txt", "w")
ipBlackList.close()
#read black list
ipBlackList = open("ipBlackList.txt", "r")
isBlocked = ipBlackList.readlines()
ipBlackList.close()
#disable account for 60 seconds
if ipBlock in isBlocked:
def countdown(t):
while t:
mins, secs = divmod(t, 60)
timer = '{:02d}:{:02d}'.format(mins, secs)
print('Your account has been temporarily disabled. Please
try again in '+timer, end=" seconds.\r")
time.sleep(1)
t -= 1
os.remove('ipBlackList.txt')
print('\nYour account has been re-enabled. You may log in
now.')
time.sleep(2)
t = 60
countdown(int(t))
block()
print("Enter administrator login details: ")
def usernameLogin():
#global vars
global tries
if tries == 3:
#read black list
ipBlackList = open("ipBlackList.txt", "r")
isBlocked = ipBlackList.readlines()
ipBlackList.close()
#get host ip
ipBlock = socket.gethostbyname(socket.gethostname())
if ipBlock not in isBlocked:
ipBlackList = open("ipBlackList.txt", "w")
ipBlackList.write(ipBlock)
ipBlackList.close()
block()
username = input("\nUsername: ")
#check if username exists
usernames = open("usernames.txt", "r")
checkUser = usernames.readlines()
usernames.close()
if username not in checkUser:
print("That username doesn't exist. Please try again.")
tries += 1
print(tries)
time.sleep(2)
usernameLogin()
print("im in")
time.sleep(3)
usernameLogin()
server()
事实上,您的代码在
tries==3
时确实执行了block()
函数,但在block()
的开头,您重新创建了黑名单文件,然后读取了空文件,因此条件if ipBlock in isBlocked:
始终为false因此,我放置了一些命令,用于从
block()
中创建文件。另外,我在countdown()
函数中更改了黑名单文件的remove
,并重新创建但不删除它,因为您的代码在重新启动时试图再次读取它以询问用户名。我还设置了tries == 0
何时block()
结束。此外,countdown()
末尾的缩进不正确相关问题 更多 >
编程相关推荐