2017-01-28 165 views
-2

因此,我正在做一個基本的臨時登錄驗證的事情,只有一個基本的文本文件「假裝」,什麼應該返回真正的不是。用戶名檢查有效但沒有密碼檢查比較等於字符串返回False?

@staticmethod 
def validate_login(filename,username,password): 
    file = open(filename,'r') 
    file.readline() 
    for line in file: 
     i = [i for i, char in enumerate(line) if char == '|'] 
     print username == line[i[0] + 2:i[1]-1] 
     print password == line[i[1] + 2:] 
     print password 
     print line[i[1] + 2:] 
     if username == line[i[0] + 2:i[1]-1] and password == line[i[1] + 2:]: 
      file.close() 
      print "Login Successful." 
      return True 

    file.close() 
    print "Failed to login. Invalid username or password." 
    return False 

這是輸出結果。密碼與文本文件完全匹配,但返回false。用戶名返回true.What究竟是什麼問題?這讓我瘋狂。

True <--- username matched correctly returns true 
False <---passwords apparently don't match, returns false. 
DopeFiend97 <--password 
DopeFiend97 
+2

您的密碼比較中可能有換行符'\ n'。您需要將其剝離()。任何不使用「split」的理由,例如'u,p = line.strip()。split('|');如果用戶名==你和密碼== p):...' – AChampion

+0

修復它,只好用line.strip() – CabDude

回答

1

只好使用.strip()函數來刪除行尾的不可預見的字符。