2013-07-28 88 views
0

我正在做一個web服務器+網站與python,我目前正在搞清楚如何檢查您的登錄值是否正確。此前的測試我用下面的代碼:Python33 - SQLite3帳戶與身份驗證

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 

據我所看到的,你不能從一個數據庫字典的形式返回兩列。我設法把一列作爲一個列表,我打算使用它。

所以在我的新的代碼,我有以下幾點:

  • 是在數據庫

  • 編碼密碼列表數據庫中的用戶名列表

我想做一個驗證功能,檢查是否:

  • 如果用戶名存在於數據庫:
  • 如果在數據庫中存在的口令:
  • 如果輸入的用戶名:密碼夫婦存在於所有現有用戶名:密碼值的數據庫:
  • 返回真,如果所有檢查都成功

問題是我覺得管理這樣的事情非常困難。正如您在示例代碼中看到的,我有兩個列表和一個字典,都是預定義的。我想要即時創建這些東西,唯一需要我幫助的是如何創建用戶名:密碼字典對。我會怎麼做這樣的事情? zip()產生元組而不是字典。

+0

不使用Flask或Django等現有框架的好理由?重新創建項目的Web框架並不是最佳實踐 - 無論是爲了生產力,還是爲了安全原因,更重要。 – jsbueno

+0

@jsbueno是的。我們想讓自己瞭解它是如何工作的,並獲得經驗。我們無意運行一個真實的網站,我們只是想體驗一下如何製作整個軟件包。 – IPDGino

+0

不錯 - 不僅僅是爲了它 - 我自己主張爲了學習的目的而從頭開始實施。 – jsbueno

回答

1
In [1]: users = ["user1", "user2"] 

In [2]: pws = ["password", "12354"] 

In [3]: dict(zip(users, pws)) 
Out[3]: {'user1': 'password', 'user2': '12354'} 
+0

非常好,我真的很尷尬,我不知道。 – IPDGino

+0

不知道一些黑客是不是一個尷尬的理由!這就是爲什麼你有StackOverflow! – sjakobi