2013-12-16 90 views
1

我正在嘗試編寫一個允許我從文件中獲取用戶名和密碼的程序。我覺得我在正確的軌道上,但是,當我運行該程序來測試它是否工作,我得到一個:從文件(Python)中獲取用戶名和密碼

Name error: global name Username is not defined.

在那裏我已經出了錯任何想法?如果格式化關閉,我很抱歉。

def login(): 
     UserName = input("Please enter your user name: ") 
     passw = input("Please enter your password: ") 
     check(UserName, passw) 
     return UserName, passw 

    def check(user, password): 
     pword = {} 
     for line in open('unames_passwords.txt','r'): 
      user, password = line.split() 
      pword[user] = password 
      if user == UserName and password == passw: 
       return True 
       print("Thank you for logging in.") 
      else: 
       print("Username or password is incorrect") 

    def main(): 
     login() 

    main() 
+4

**不要以純文本**存儲密碼。你必須_hash_你的密碼。 – SLaks

+0

@SLaks **不要提供未經請求的建議而不提供解釋。** - 在那裏,我也可以用黑體字寫東西!但是,嚴肅地說,如果你覺得有必要評論一個明顯的玩具應用的安全問題,請至少分享你的推理,而不是僅僅寫一個聲明。 – l4mpi

回答

3

check功能沒有名爲UserName任何變量。
相反,它有一個名爲user的參數,然後由文件中的行覆蓋。

您需要將參數更改爲唯一名稱,然後使用該名稱。

+0

謝謝,現在我只是想弄清楚如何停止重複打印語句。 – user3107805

+0

@ user3107805:這聽起來像只在沒有找到_any_匹配的行(意思是在查看所有行之後)而不是每個不匹配的行時纔打印。 – SLaks

+0

關於如何去做這件事的任何建議? – user3107805

相關問題