2012-04-24 14 views
2

私はpythonを使ってログインシステムを作りたいと思います。Python:ログインシステムの作成

これは私がpythonを把握し、最終的にこれを私が作成しているwebpageに送るための小さなプロジェクトです。

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

私たちは一歩一歩行こう:あなたは、ユーザーを追加しているので、

まず、ユーザーが存在する場合は、チェックはいつもそれが存在するならば、チェック、それがないを教えてくれます。だから、あなたが書いた文が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:のために書いた条件は役に立たない(が、まだ右)である(1がTrueに評価されるため)、あなたはwhile 1を行うことができますまたはさらに良いものはwhile True:です。

第3に、ユーザー名/パスワードのチェックでは、最後のユーザーとパスワードのみがチェックされます。 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だけを使用しますが、私はpythonを使って学校向けのプロジェクトを行う必要があります。 – user1308214

+0

Nice answer !!!! – gab06

+0

あなたが提案する既存のツールは何ですか?この投稿には、既に存在していたPythonユーザシステムを探しています。 – lathomas64

関連する問題