[Problema] Error al logear / registrarse
#1

En la primera imagen verбn que pide logearse, bien, me logeo o registro pero introduzco la contraseсa nueva o la que ya tenнa y salta error



Aca los intentos (Dar click para agrandar)




їPorquй pasa esto?
Reply
#2

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.
Reply
#3

Quote:
Originally Posted by Daniel-92
Посмотреть сообщение
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.
Perdуn, se me fue el aviуn.

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", "");
Reply
#4

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]);
Reply
#5



Si comparas la imagen de arriba del archivo es la misma..
Reply
#6

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
Reply
#7

Quote:
Originally Posted by Daniel-92
Посмотреть сообщение
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
Hice el cambio y sigue igual, me marca error (1/4 intentos).
Reply
#8

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.
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");
        }
    }
}
Reply
#9

Bonito test <3

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);
Asн lo deje
Reply
#10

Quote:
Originally Posted by Lunnatiicz
Посмотреть сообщение
Bonito test <3

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);
Asн lo deje
debajo de esa linea agregб esto, tal vel ahi si funciona
pawn Код:
InfoCuenta[playerid][Pass][strlen(valtmp)] = 0;
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)