私はPythonでWebサーバー+ Webサイトを作成しています.現在、ログイン値が正しいかどうかを確認する方法を考えています. 以前のテストでは、次のコードを使用しました。
def checkUser(username, password): #<-- input values go in here
site_usernames = ["admin", "username1", "username2"]
site_passwords = ["admin", "password1", "password2"]
site_couples = {"admin":"admin", "username1":"password1", "username2":"password2"}
not_counter = 0
while True:
if username in site_usernames:
if password in site_passwords:
for key in site_couples:
if (username == key) and (password == site_couples[key]):
print("User %s logged in!" % username)
return True
else:
not_counter = not_counter + 1
if not_counter > 10:
print("User failed login with accountname: %s" % username)
return False
break
else:
continue
else:
pass_exists = False
break
else:
user_exists = False
break
私が見た限りでは、データベースから 2 つの列を辞書として返すことはできません。1つの列をリストとして取得できたので、それを使用する予定です。
したがって、私の新しいコードでは、次のようになります。
データベースにあるユーザー名のリスト
データベース内のエンコードされたパスワードのリスト
次のことを確認する認証機能を作成したいと思います。
- ユーザー名がデータベースに存在する場合:
- パスワードがデータベースに存在する場合:
- 入力されたユーザー名:パスワードの組み合わせが、データベース内のすべての既存のユーザー名:パスワード値に存在する場合:
- すべてのチェックが成功した場合は True を返します
問題は、そのようなことを管理するのが非常に難しいことです。サンプル コードでわかるように、2 つのリストと dict があり、すべて事前定義されています。私はそれらのものをその場で作成したいと思っています。実際に助けが必要なのは、ユーザー名とパスワードの辞書のペアを作成する方法だけです。どうすればそんなことをするでしょうか?zip()
辞書ではなくタプルを作成します。