簡體   English   中英

Python3,Tkinter,SQLite3-登錄編碼錯誤

[英]Python3, Tkinter, SQLite3 - Login coding error

嘗試驗證憑據時出現問題(我將在下面發布代碼)。 我想知道是否正在發生,因為我在數據庫中將用戶名和密碼存儲為字符串,是否應該將其存儲為整數?

問題:我認為簡單地舉例說明問題是更容易的,也許更容易理解。

正確的信息(用戶名=密碼,密碼=測試)

示例1:您輸入“ something”作為用戶名,輸入“ password”作為密碼-很好,但是下一個示例出了問題。

示例2:您輸入用戶名“ somethingfpsadadoia”和密碼“ testing”-只要密碼正確,程序就會說它是正確的。 因此,只要您在用戶名條目下包含用戶名的一部分,那么密碼就可以使用,但是此后的任何操作都不會被認為是錯誤的。

非常感謝任何人都可以提供幫助!

“”“ def Is_Valid():

UsernameValidity=UserName_Entry.get()        
PasswordValidity=Password_Entry.get()
cursor.execute('''SELECT password FROM users WHERE username = ?''', (UsernameValidity,))
cursor.execute('''SELECT username FROM users WHERE password = ?''', (PasswordValidity,))
LogInAttempt = cursor.fetchone()
print (Is_Valid) # Testing to see if it works on shell
if LogInAttempt:
    print (" One of the accounts have successfully logged in ")
    IsValidText.config(text=" You have logged in! ", fg="black", highlightthickness=1)
    myGUI.after(1000, CoreContent) # Ignore this one for now.
else:
    print (" One of the accounts inputted the wrong credentials! ")
    IsValidText.config(text=" Invalid username or Password! ", fg="black", highlightthickness=1)

“”

您正在執行兩個完全獨立的查詢。 第二次execute調用將丟棄第一個調用的任何結果; cursor獲取的是第二個查詢的結果。

查看每一行時,您必須告訴數據庫檢查這兩個值:

cursor.execute('SELECT 1 FROM users WHERE username = ? AND password = ?',
               [UsernameValidity, PasswordValidity])
LogInAttempt = cursor.fetchone()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM