2017-01-28 5 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を返します。問題は何ですか?私を狂ってしまう。

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

あなたのパスワード比較には改行 '\ n'がある可能性があります。それを 'strip()'する必要があります。 「分割」を使用しない理由は何か。 'u、p = line.strip()。split( '|'); if username == u and password == p):... – AChampion

+0

これは、line.strip()を使用しなければならない問題を修正しました。 – CabDude

答えて

1

行末の予期しない文字を削除するには、.strip()関数を使用する必要がありました。

関連する問題