SA-MP Forums Archive
Duda con INI, se registra aunque pulses 'Salir' - 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: Duda con INI, se registra aunque pulses 'Salir' (/showthread.php?tid=568808)



Duda con INI, se registra aunque pulses 'Salir' - Orei - 25.03.2015

Hola, tengo un registro por INI y me he dado cuenta de que en el registro por diбlogo, si entro con una cuenta nueva y en vez de poner la contraseсa y registrarme le doy a salir, se registra en la ruta de los archivos y aparece sin la lнnea de contraseсa, evidentemente cuando vuelvo a entrar ya aparece como que estб registrado pero lуgicamente no existe ninguna contraseсa.

Os dejo el case del diбlogo de registro:

Код:
case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, ""WHITE"Registering...",""RED"You have entered an invalid password.\n"WHITE"Type your password below to register a new account.","Register","Quit");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File,"Datos del usuario");
                INI_WriteInt(File,"clave",udb_hash(inputtext));
                INI_WriteInt(File,"dinero",0);
                INI_WriteInt(File,"nAdmin",0);
                INI_WriteInt(File,"matados",0);
                INI_WriteInt(File,"muertes",0);
                INI_Close(File);

                SetSpawnInfo(playerid, 0, 26, 1722.3063, -1694.1846, 13.5000, 179.9952, 0, 0, 0, 0, 0, 0);
                SpawnPlayer(playerid);
			}
        }
Gracias !


Respuesta: Duda con INI, se registra aunque pulses 'Salir' - OTACON - 25.03.2015

esta incompleto...

PHP код:
if(! /* restricciуn para identificar si esta registrado */ ){
    
// no esta registrado
    // funciуn
}else{
    
// si esta registrado
    // funciуn
    
if(!strcmp(inputtextudb_hash(inputtext)){ // comprueba la contraseсa
    // contraseсa correcta
    // funcion
    
{else{
    
// contraseсa incorrecta
    // funciуn
    
}

INI_WriteInt esta mal deberia ser INI_WriteString


Respuesta: Duda con INI, se registra aunque pulses 'Salir' - Zume - 25.03.2015

Quote:
Originally Posted by OTACON
Посмотреть сообщение
esta incompleto...

INI_WriteInt esta mal deberia ser INI_WriteString
Estб bien, el "hash" adler-32 convierte letras a nъmeros.


Re: Duda con INI, se registra aunque pulses 'Salir' - SickAttack - 25.03.2015

Es un error logico, estas guardando la informacion del jugador al desconectarse, tienes que declarar una variable nuevo y asignarle true al registrar o al iniciar session, y luego en el callback que es llamado al desconectarte del servidor pones un si-entonces y si la variable esta en true, entonces guardas la informacion del usuario, de otro modo no se va hacer nada.


Respuesta: Duda con INI, se registra aunque pulses 'Salir' - PolloLoko - 25.03.2015

No te compliques tanto creando variables, simplemente agrega al desconectar de esta forma, que si el user no se registro al desconectar no guarde nada de el, ya que como no tienes definido, quiza se guarde datos de cualquier user sin que este registrado

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    if(fexist(UserPath(playerid)))//Esta cuenta existe... y se guardara sus datos
    {
    new INI:File = INI_Open(UserPath(playerid));
    INI_SetTag(File,"data");
    INI_WriteInt(File,"dinero",GetPlayerMoney(playerid));
    INI_WriteInt(File,"nAdmin",Variable);
    //lo demas....
    }
return 1;}



Re: Respuesta: Duda con INI, se registra aunque pulses 'Salir' - SickAttack - 25.03.2015

Quote:
Originally Posted by PolloLoko
Посмотреть сообщение
No te compliques tanto creando variables, simplemente agrega al desconectar de esta forma, que si el user no se registro al desconectar no guarde nada de el, ya que como no tienes definido, quiza se guarde datos de cualquier user sin que este registrado

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    if(fexist(UserPath(playerid)))//Esta cuenta existe... y se guardara sus datos
    {
    new INI:File = INI_Open(UserPath(playerid));
    INI_SetTag(File,"data");
    INI_WriteInt(File,"dinero",GetPlayerMoney(playerid));
    INI_WriteInt(File,"nAdmin",Variable);
    //lo demas....
    }
return 1;}
Namas es una variable.

Tambien se puede hacer eso, pero usando una variable podras detectar si el usuario ha iniciado session y lo podras usar en varios lugares, por ejemplo: para permisos de chat, para prohibir spawnear si no te has identificado, etc. Aunque, depende de el, el sabra cual quiere usar.