我试图在python中使用tkinter创建一个登录/注册表函数,但将自己与通过登录函数进行验证搞混了。它应该与数据库连接,并查看字段是否正确,但我不知道如何操作。
def login_verify():
global c
with sqlite3.connect('database.db') as db:
c = db.cursor()
username1 = username_verify.get()
password1 = password_verify.get()
username_login_entry.delete(0, END)
password_login_entry.delete(0, END)
finduser = ('SELECT * FROM Users WHERE username =? AND password =?')
c.execute(finduser,[(username1),(password1)])
results = c.fetchall()
if results:
login_sucess()
else:
password_not_recognised()
user_not_found()
def login_success():
global login_success_screen
login_success_screen = Toplevel(login_screen)
login_success_screen.title("Success")
login_success_screen.geometry("150x100")
Label(login_success_screen, text="Login Success").pack()
Button(login_success_screen, text="OK", command=delete_login_success).pack()
def password_not_recognised():
global password_not_recog_screen
password_not_recog_screen = Toplevel(login_screen)
password_not_recog_screen.title("Success")
password_not_recog_screen.geometry("150x100")
Label(password_not_recog_screen, text="Invalid Password ").pack()
Button(password_not_recog_screen, text="OK", command=delete_password_not_recognised).pack()
def user_not_found():
global user_not_found_screen
user_not_found_screen = Toplevel(login_screen)
user_not_found_screen.title("Success")
user_not_found_screen.geometry("150x100")
Label(user_not_found_screen, text="User Not Found").pack()
Button(user_not_found_screen, text="OK", command=delete_user_not_found_screen).pack()
当使用不正确的密码登录时,它应该运行函数'password_not_recognised‘
当使用不在数据库中的详细信息登录时,它应该运行'user_not_found‘
当细节正确时,它应该运行login_success ()
发布于 2019-04-24 03:06:47
我宁愿让你自己完成这项任务,所以我将介绍基本原理:
您已经使用了准备好的语句,这是很棒的,如果使用得当,它可以防止sql注入攻击。尽管您不应该将密码以明文形式存储在数据库中。使用hashlib
模块并将密码的散列与存储在数据库中的密码的散列进行比较。
应该对查询数据库的方式进行两个更改:
https://stackoverflow.com/questions/55817320
复制相似问题