CheckLogin converted to DatabaseQuery

This commit is contained in:
Arthur Ice 2014-07-03 15:15:42 -07:00 committed by Arthur Ice
parent e6023a7013
commit 02f21ad7c9

View File

@ -148,48 +148,39 @@ Return the account id or zero if no account matches.
Zero will also be returned if there is a database error. Zero will also be returned if there is a database error.
*/ */
uint32 Database::CheckLogin(const char* name, const char* password, int16* oStatus) { uint32 Database::CheckLogin(const char* name, const char* password, int16* oStatus) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0; char *query = nullptr;
MYSQL_RES *result;
MYSQL_ROW row;
if(strlen(name) >= 50 || strlen(password) >= 50) if(strlen(name) >= 50 || strlen(password) >= 50)
return(0); return(0);
char tmpUN[100]; char tmpUN[100];
char tmpPW[100]; char tmpPW[100];
DoEscapeString(tmpUN, name, strlen(name)); DoEscapeString(tmpUN, name, strlen(name));
DoEscapeString(tmpPW, password, strlen(password)); DoEscapeString(tmpPW, password, strlen(password));
if (RunQuery(query, MakeAnyLenString(&query, auto results = QueryDatabase(query, MakeAnyLenString(&query,
"SELECT id, status FROM account WHERE name='%s' AND password is not null " "SELECT id, status FROM account WHERE name='%s' AND password is not null "
"and length(password) > 0 and (password='%s' or password=MD5('%s'))", "and length(password) > 0 and (password='%s' or password=MD5('%s'))",
tmpUN, tmpPW, tmpPW), errbuf, &result)) { tmpUN, tmpPW, tmpPW));
safe_delete_array(query);
if (mysql_num_rows(result) == 1) safe_delete_array(query);
{
row = mysql_fetch_row(result); if (!results.Success())
uint32 id = atoi(row[0]);
if (oStatus)
*oStatus = atoi(row[1]);
mysql_free_result(result);
return id;
}
else
{
mysql_free_result(result);
return 0;
}
mysql_free_result(result);
}
else
{ {
std::cerr << "Error in CheckLogin query '" << query << "' " << errbuf << std::endl; std::cerr << "Error in CheckLogin query '" << query << "' " << results.ErrorMessage() << std::endl;
safe_delete_array(query); return 0;
return false;
} }
return 0; auto row = results.begin();
uint32 id = atoi(row[0]);
if (oStatus)
*oStatus = atoi(row[1]);
return id;
} }