使用python在SQLite中搜索用户输入变量(字符串)

时间:2015-04-12 05:26:40

标签: python sql search sqlite

我正在尝试在表格中搜索用户名,然后找到用户密码并根据输入检查它到目前为止我有...

    def check():
            username = logEntry.get()
            password = passEntry.get()
            curs.execute("SELECT * FROM logins WHERE username = VALUES (?);", (username))
            userExists = curs.fetchone()
            if userExists:
                curs.execute("SELECT * FROM logins WHERE password = VALUES (?);",(password))
                passExists = curs.fetchone()
                if passExists:
                    controller.show_frame(look)
            else:
                errorLabel.place(x=0, y=0)

    logButton = tk.Button(self, text="Login", command=check)
    logButton.place(x=320, y=120)

    regButton = tk.Button(self, text="Registration For New Users",
                          command=lambda: controller.show_frame(Register))
    regButton.place(x=110, y=120)

非常感谢任何帮助或建议:)

更新:我现在遇到一个错误,说列用户名不存在,这是我到目前为止所遇到的问题。 @安蒂-哈帕拉

     def check():
            username = logEntry.get()
            password = passEntry.get()
            cursor.execute("SELECT username, password" "FROM logins WHERE username = ?",(username))
            resultrow = cursor.fetchone()
            if resultrow is not None:
                db_username, db_password = resultrow
                if username == db_username and password == db_password:
                    controller.show_frame(look)

1 个答案:

答案 0 :(得分:2)

您的代码有问题。即使这确实是一个Tkinter程序,并且密码检查没有真正添加到任何安全性,应注意以下所有读者可能不知道您的代码中的含义:

这种程序首先存在具有给定用户名的任何用户,然后它会检查是否存在具有给定密码的任何用户,这些不一定是一样的。如果您在制作中使用此类代码,我可以通过将不相关的用户帐户密码更改为a并使用admin a登录来进入管理员帐户。< / p>


请尝试这样的操作,以确保您检查的密码属于您正在检查的用户:

results = cursor.execute("SELECT username, password "
                         "FROM logins WHERE username = ?", (username,))
resultrow = cursor.fetchone()
if resultrow is not None:
    db_user, db_password = resultrow
    if username == db_user and password == db_password:
        controller.show_frame(look)

请注意存储纯文本密码是不受欢迎的;最好用单向盐渍密码散列方案加密这些;例如passlibPyPI)是一个不错的选择。