2013-12-16 53 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

相关问题