SA-MP Forums Archive
No logro obtener datos con cache_get_field_content. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: No logro obtener datos con cache_get_field_content. (/showthread.php?tid=605942)



No logro obtener datos con cache_get_field_content. - maestrolimpio123 - 27.04.2016

Estoy intentando obtener un dato que es la salt de la tabla cuentas, el problema es que no lo obtiene.

Mi codigo:

Код:
// 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]);
	}
}
Y lo unico que consigo en consola es esto:



Gracias y espero obtener algun tipo de ayuda, que me gustaria volver a pawn . Un saludo y gracias.


Respuesta: No logro obtener datos con cache_get_field_content. - wharlos - 27.04.2016

Yo no se casi nada de mysql pero yo obtengo datos asн te dejo un ejemplo con tus datos
cache_get_field_content(0, "salt", PlayerInfo[extraid][Salt], mysql, 32);


Respuesta: No logro obtener datos con cache_get_field_content. - aoEXE - 27.04.2016

Код:
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);
}
y borra el case 'THREAD_SALT' de OnQueryFinished.

Aunque, no entiendo muy bien como quieres hacer ese login... haces como 50 consultas xD


Re: No logro obtener datos con cache_get_field_content. - maestrolimpio123 - 27.04.2016

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 -_-


Respuesta: Re: No logro obtener datos con cache_get_field_content. - aoEXE - 28.04.2016

Quote:
Originally Posted by maestrolimpio123
Посмотреть сообщение
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 -_-
ah si cierto, tenнa que usar content xD.

Bбsicamente es lo mismo que intentabas hacer, sуlo que no era necesario tener que usar una variable global para eso si sуlo la usas ahн.

Si te cargaba bien 'salt', pero establecнas el valor de 'PlayerInfo[extraid][Salt]' como un entero ("PlayerInfo[extraid][Salt] = strval(content);") y es lo que usabas para el hash cuando en realidad es una cadena tambiйn. En ese caso la fueras cargado directamente en la variable global:

Код:
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]);
	}
}



Re: Respuesta: Re: No logro obtener datos con cache_get_field_content. - maestrolimpio123 - 28.04.2016

Mmm, ya voy entendiendo un poco, Muchas gracias!