Duda con INI, se registra aunque pulses 'Salir'
#1

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

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

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

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

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;}
Reply
#6

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


Forum Jump:


Users browsing this thread: 2 Guest(s)