14.05.2012, 18:54
[Problema] Error al logear / registrarse
14.05.2012, 19:00
deja el code donde verifica la contraseсa y tambien verificб que donde guardйs la contaseсa (dini,mysql,etc) se este guardando bien.
14.05.2012, 19:08
Quote:
deja el code donde verifica la contraseсa y tambien verificб que donde guardйs la contaseсa (dini,mysql,etc) se este guardando bien.
|
Mira aquн te dejo ambos ini
pawn Код:
stock ini_GetKey( line[] )
{
new keyRes[256];
keyRes[0] = 0;
if ( strfind( line , "=" , true ) == -1 ) return keyRes;
strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) );
return keyRes;
}
stock ini_GetValue( line[] )
{
new valRes[256];
valRes[0]=0;
if ( strfind( line , "=" , true ) == -1 ) return valRes;
strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
return valRes;
}
Acб podrбs confirmar que SI la guarda debidamente
Aca el resto del cуdigo
pawn Код:
if ( UFile )
{
new PassD[256];
new keytmp[256], valtmp[256];
fread( UFile, PassD, sizeof(PassD));
keytmp = ini_GetKey( PassD );
if( strcmp ( keytmp, "Pass" , true) == 0)
{
valtmp = ini_GetValue ( PassD ) ;
strmid(InfoCuenta[playerid][Pass], valtmp, 0 , strlen(valtmp)-1, 255);
}
if(strcmp(InfoCuenta[playerid][Pass], inputtext, true) == 0)
{
new key[256], val[256];
new Datos[256];
while (fread ( UFile, Datos, sizeof(Datos)))
{
key = ini_GetKey(Datos);
//Aca sigue el cargado de datos pero no importa
}
else //aca contradice el if de encima para la pass
{
IntentoLogeo[playerid]++;
new Q[128];
format(Q, sizeof(Q), "Has introducido una contraseсa incorrecta!\nA Tienes %d intentos, a los 4 se te baneara la cuenta", IntentoLogeo[playerid]);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Error", Q, "Entrar", "");
14.05.2012, 19:27
Analizando el code lo veo todo bien, intentб poner unos printf para saber si la contraseсa que se obtiene del archivo es la correcta
pawn Код:
printf("Contraseсa desde el archivo %s",InfoCuenta[playerid][Pass]);
14.05.2012, 19:47
14.05.2012, 20:12
Tuve que probar el codigo y el -1 que le restas a la longitud de la clave se come el ъltimo caracter, quitarlo para que se copie correctamente a InfoCuenta[playerid][Pass]
pawn Код:
strmid(InfoCuenta[playerid][Pass], valtmp, 0 , strlen(valtmp)-1, 255); //mala
strmid(InfoCuenta[playerid][Pass], valtmp, 0 , strlen(valtmp), 255); //correcta
14.05.2012, 20:17
Quote:
Tuve que probar el codigo y el -1 que le restas a la longitud de la clave se come el ъltimo caracter, quitarlo para que se copie correctamente a InfoCuenta[playerid][Pass]
pawn Код:
|
14.05.2012, 20:33
El cambio de quitarle el -1 solo lo tenias que hacer en la linea que puse, el los ini_getvalue y en el otro ini lo tenias que dejar igual.
Este es el test que hice y me funcionу perfecto.
Este es el test que hice y me funcionу perfecto.
pawn Код:
#include a_samp
const Pass = 0;
new InfoCuenta[1][64];
public OnRconCommand(cmd[]) {
Intentar(cmd);
return 1;
}
Intentar(inputtext[])
{
const playerid = 0;
new File:UFile = fopen("TEST.txt",io_read);
if (UFile)
{
new PassD[256];
new keytmp[256], valtmp[256];
fread( UFile, PassD, sizeof(PassD));
keytmp = ini_GetKey( PassD );
if( strcmp ( keytmp, "Pass" , true) == 0)
{
valtmp = ini_GetValue ( PassD ) ;
strmid(InfoCuenta[playerid][Pass], valtmp, 0 , strlen(valtmp), 255);
}
if(strcmp(InfoCuenta[playerid][Pass], inputtext, true) == 0)
{
print("La contraseсa es correcta :))");
}
else //aca contradice el if de encima para la pass
{
print("La contraseсa es incorrecta :(\a");
}
}
}
14.05.2012, 20:36
Bonito test <3
Jaja solamente cambiй le retirй el valor '-1' en donde me indicaste de la longitud.
Asн lo deje
Jaja solamente cambiй le retirй el valor '-1' en donde me indicaste de la longitud.
pawn Код:
strmid(InfoCuenta[playerid][Pass], valtmp, 0 , strlen(valtmp), 255);
14.05.2012, 20:43
Quote:
Bonito test <3
Jaja solamente cambiй le retirй el valor '-1' en donde me indicaste de la longitud. pawn Код:
|
pawn Код:
InfoCuenta[playerid][Pass][strlen(valtmp)] = 0;
« Next Oldest | Next Newest »
Users browsing this thread: 1 Guest(s)