[英]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.