python驗證用戶名和密碼

這篇是接上一篇內容,上篇實現瞭如何將明文的密碼加密寫入數據庫中,咱們今天這段代碼就是實現如何讓用戶輸入用戶名和密碼,而後跟數據庫中的信息進行比較,若是匹配就顯示登錄成功,若是密碼錯誤將提示用戶繼續輸入,用戶可輸入三次密碼嘗試,若是都輸入錯誤就直接退出,若是有一次正確就表示登錄成功,接下來咱們來看腳本實現: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循環,判斷條件是若是密碼輸入的次數少於容許輸入的次數,就一直讓用戶輸入,輸入三次後仍不正確就退出程序,若是有一次正確,就顯示用戶登陸,而後退出,腳本完畢。

相關文章
相關標籤/搜索