2012-04-24 3 views
2

파이썬을 사용하여 로그인 시스템을 만들고 싶습니다.Python : 로그인 시스템 만들기

이 프로젝트는 내가 수행하고있는 작은 프로젝트이므로 python을 파악하고 결국 작성하는 으로 전송할 수 있습니다.

user = raw_input('Create Username: ') 
password = raw_input('Create Password: ') 
store_user =[roger, Jon] 
store_pass =[tennis, soccer] 

store_user.append(user) 
store_pass.append(password) 

if user in store_user: 
    print "That user already exsist" 

while 1 == 1: 
    userguess="" 
    passwordguess="" 
    key="" 
    while (userguess != user) or (passwordguess != password): 
     userguess = raw_input('User Name: ') 
     passwordguess = raw_input('Password:') 

    print "Welcome,",user, ". Type Lock to Lock or Type Create to create another user." 
    print store_user 
    print store_pass 

    while key != "lock": 
     key = raw_input("") 

이 사용자 이름과 암호를 작성하고 목록에 저장 것이다 가져옵니다

지금 현재 나는이 있습니다. 나는 if 문을 던져서 사용자가 이미 존재 하는지를 확인하기 위해 목록을 확인한다. (그러나 나는 그럴 것이라고 생각하지 않는다)

나는 모든 것을 루프 처리하는 방법에 대한 지침을 원한다. 예를 들어, 로그인을했는지 여부를 선택할 수 있습니다. 로그인 한 후에 다른 옵션을 만들 수 있으며, 해당 사용자가 이미 있는지 확인합니다.

감사합니다.

+0

일반적으로 비밀번호에서 [생성] 될 수있는 비밀번호 (http://en.wikipedia.org/wiki/Cryptographic_hash_function#Verifying_the_integrity_of_files_or_messages)가 아닌 비밀번호를 저장합니다. –

+0

또한 암호를 화면에 표시하지 않는 ['getpass'] (http://docs.python.org/library/getpass.html) 모듈을 참조하십시오. –

답변

0

이것은 좋은 시작입니다. 나는 체크 아웃을 권합니다 : http://www.greenteapress.com/thinkpython/, 사전과 같은 데이터 구조를 사용하면이 작업이 크게 단순해질 것입니다.

항목이 이미 목록에 있는지 보려면 해당 항목을 반복 할 수 있습니다.

for item in list: 
    if input == item: 
     # item is in list 
     break 
    # item is not in list 

코드를 기능화하여 모듈화하는 것도 도움이 될 수 있습니다. 예를 들어, 사용자가 등록되어있는 경우 True를 반환하는 check_name 기능을 할 수 :

def check_user(user, user_list): 
    for item in list: 
     if user == item: 
      return True 
      break 
     return False 

등이 작업을 수행하는도 짧은 가지 방법이 있습니다 : 당신이 결국 온라인으로 프로젝트를 제공 할 Python: check if value is in a list no matter the CaSE

가 Django 나 Flask와 같은 프레임 워크를 살펴보면, 로그인, 사용자 관리 등의 작업을 크게 단순화합니다. 행운을 비네.

+0

고마워요! 네, 저는 그것을 다시보고 있었고, 이것이 깨끗해 질 수있는 것처럼, 저는 단지 일할 무언가를 얻는 데 열중했습니다. – user1308214

+0

안녕하세요. 좋은 소식입니다. 어딘가에서 시작하여 코드를 가지고 놀고 자신의 솔루션을 찾는 것이 배움의 가장 좋은 방법입니다. – zallarak

3

우리가 단계별로 가자 :

먼저 체크 사용자는 사용자, 다음 존재하는 경우 확인으로 추가되기 때문에 항상 그것을 수행을 알려줍니다 (존재하는 경우). 그래서 당신이 쓴 if 문은 OK이지만, store_user.append 전에 넣어 :

if user in store_user: 
    print "That user already exsist" 
else: 
    store_user.append(user) 
    store_pass.append(password) 

둘째, while 1 == 1:을 위해 쓴 상태, 당신은 while 1을 할 수있는 (오른쪽하지만 여전히) 쓸모가 (1 True로 평가되므로) 또는 심지어 더 나은 while True:.

세 번째로, 사용자 이름/암호 검사는 마지막 사용자와 암호 만 검사합니다. 암호로 userguess in store_user을 사용하고 암호가 같으면 예상 한 결과를 얻지 못할 것입니다. 따라서 목록 대신 사전을 사용해야합니다. 이 경우 에 할당 할 수 있습니다. 귀하의 경우 사용자는 암호를 입력해야하므로 다음을 갖게됩니다.

store = dict() 
# the code to get the user/password 
store[user] = password # you "save" the value password for the key user 

# then to check: 
while not (userguess in store and store[userguess] == passwordguess): 
    # try again 

사전에 대해 자세히 알아보십시오.

그런 다음 각 "논리"프로 시저를 함수에 저장하여 코드를보다 읽기 쉽고 다시 사용할 수있게 만들 수 있습니다. 예를 들어 :

def add_user(store): 
    user = raw_input('Create Username: ') 
    password = raw_input('Create Password: ') 
    if user in store: 
     print "That user already exsist" 
     return False 
    else: 
     store[user] = password 
     return True 

# and call this 10 times for example... 
global_store = dict() 
for i in range(10): 
    add_user(global_store) 

가 확인 암호 부분에 대한 동일한 작업을 수행 (등, 클래스를 사용하여 말할 것도없고), 그리고 당신은 당신이 무엇을 기대해야 할 변경 사항의 비트와 함께 만든 루프를 사용할 수 있습니다. 나는 희망을 ..

나는 분명, 나는이 아마도 당신이 기대했던 대답이 아니라 여기 간다 :

+0

올바른 방향으로 나를 가리켜 주셔서 감사합니다 남자! – user1308214

3

도움 있음 :하지 마십시오 바퀴를 다시 발명.

가능한 한 기존 도구를 사용하고 무료로 얻을 수없는 기능에 중점을 둡니다.

+0

나는 보통 php 만 사용 하겠지만 파이썬을 사용하는 학교 프로젝트를해야한다. – user1308214

+0

좋은 답변 !!!! – gab06

+0

제안 할만한 기존 도구는 무엇입니까? 이 게시물에 걸쳐서 파이썬 사용자 시스템이 이미 존재하는지 살펴 보았습니다. – lathomas64