// Salt ya la tengo definida enum playerInfo { // Otras variables Salt[128] }; SQL_IntentoLogin(playerid, const password[]) { new query[300], string[256], buffer[129]; format(query, sizeof(query), "SELECT `salt` FROM `accounts` WHERE `Username` = '%s'", PlayerInfo[playerid][pUsername]); mysql_tquery(conn, query, "OnQueryFinished", "dd", playerid, THREAD_SALT); printf("La salt verdadera es %s", PlayerInfo[playerid][Salt]); strcat(string,password); strcat(string,PlayerInfo[playerid][Salt]); WP_Hash(buffer, sizeof(buffer), string); format(query, sizeof(query), "SELECT `ID` FROM `accounts` WHERE `Username` = '%s' AND `Password` = '%s'", PlayerInfo[playerid][pUsername], buffer); mysql_tquery(conn, query, "OnQueryFinished", "dd", playerid, THREAD_LOGIN); } //Esto lo tengo en OnQueryFinished, con su respectivo switch case THREAD_SALT: { cache_get_data(rows, fields, conn); if (rows) { static content[128]; cache_get_field_content(0, "salt", content, conn); PlayerInfo[extraid][Salt] = strval(content); print("Se esta obteniendo la variable salt"); printf("La verdadera salt en THREAD es %s", PlayerInfo[extraid][Salt]); } }
SQL_IntentoLogin(playerid, const password[]) { new query[300], string[256], buffer[129], content[129]; mysql_format(conn,query,sizeof(query),"SELECT `salt` FROM `accounts` WHERE `Username` = '%e' LIMIT 1",PlayerInfo[playerid][pUsername]); new Cache:result = mysql_query(conn, query); if(cache_num_rows()) { cache_get_field_content(0, "salt", content, conn); } cache_delete(result); strcat(string,password); strcat(string,PlayerInfo[playerid][Salt]); WP_Hash(buffer, sizeof(buffer), string); mysql_format(conn, query, sizeof(query), "SELECT `ID` FROM `accounts` WHERE `Username` = '%e' AND `Password` = '%s' LIMIT 1", PlayerInfo[playerid][pUsername],buffer); mysql_tquery(conn, query, "OnQueryFinished", "dd", playerid, THREAD_LOGIN); }
Muchas gracias, solo era cambiar el PlayerInfo[playerid][Salt] por content en strcat para hashear la contraseсa y compararla, ya funciona bien, pero їMe podrias explicar un poco el cуdigo? ando un poco perdido -_-
|
case THREAD_SALT: { cache_get_data(rows, fields, conn); if (rows) { //Salt debe ser una cadena cache_get_field_content(0, "salt", PlayerInfo[extraid][Salt], conn,129); print("Se esta obteniendo la variable salt"); printf("La verdadera salt en THREAD es %s", PlayerInfo[extraid][Salt]); } }