QT SQLITE登录应用程序

QT SQlite login application

本文关键字:应用程序 登录 SQLITE QT      更新时间:2023-10-16

我正在创建一个需要从用户登录的应用。

我的问题是,即使用户输入任何用户名或密码,代码就会像正确登录一样执行。

QString email, password;
email = ui->loginEmailbox->text();
password = ui->loginPassbox->text();
QSqlQuery qry;
qry.prepare("SELECT email FROM userRecords WHERE email = (:email)");
qry.bindValue(":email", email);
qry.prepare("SELECT password FROM userRecords WHERE password = (:password)");
qry.bindValue(":password", password);
if(qry.exec()){
    if(qry.next()){
        userMenu usermenu;
        usermenu.setModal(true);
        usermenu.exec();
    }
}else
    ui->loginStatusL->setText("Log-in failed, username or password incorrect!");

您正在准备2个查询并执行一个查询。现在,如果任何密码匹配此密码将登录。

qry.prepare("SELECT DISTINCT email FROM userRecords WHERE email = :email AND password = :password");
qry.bindValue(":email", email);
qry.bindValue(":password", password);

这应该起作用,但这不是检查凭据的最佳/最安全方法。