這篇是接上一篇內容,上篇實現瞭如何將明文的密碼加密寫入數據庫中,咱們今天這段代碼就是實現如何讓用戶輸入用戶名和密碼,而後跟數據庫中的信息進行比較,若是匹配就顯示登錄成功,若是密碼錯誤將提示用戶繼續輸入,用戶可輸入三次密碼嘗試,若是都輸入錯誤就直接退出,若是有一次正確就表示登錄成功,接下來咱們來看腳本實現:python
#!/usr/bin/env pythonsql
import sys數據庫
import hashlibapp
import getpasside
import sqlite3函數
def main():測試
user_name = raw_input('Please Enter User Name: ')fetch
conn = sqlite3.connect('pub.db')加密
cu = conn.cursor()spa
sql = '''
select name,pass from user where name = ?
'''
cu.execute(sql, (user_name,))
uname,pw = cu.fetchone()
pass_try = 0
x = 3
while pass_try < x:
user_pass = hashlib.sha224(getpass.getpass('Please Enter Password: ')).hexdigest()
if user_pass != pw:
print 'Incorrect Password,\n'
pass_try += 1
else:
print 'User is logged in!\n'
sys.exit()
if __name__ == "__main__":
main()
腳本解釋,根據用戶輸入的用戶名,從數據庫中查詢用戶名和密碼,此處寫的教簡單,正常應先判斷是否有這個用戶名,若是沒有就直接返回錯誤,請須要的朋友本身加代碼測試吧,從數據庫中獲取數據用的遊標對象,fetchone()函數將獲取數據庫中用戶信息,返回的是元組,賦值給變量user,pw,而後定義了能夠容許用戶嘗試幾回密碼,這裏定義的是3次,接下來是個while循環,判斷條件是若是密碼輸入的次數少於容許輸入的次數,就一直讓用戶輸入,輸入三次後仍不正確就退出程序,若是有一次正確,就顯示用戶登陸,而後退出,腳本完畢。