No reconoce la contraseсa
#1

Buenas, estaba haciendo el login del servidor, pero resulta que al introducir la contraseсa, me da como incorrecta, no sй que podrнa ser, reciйn estoy empezando en el SQLite, asн que quisiera que me dieran una mano si no es mucha molestia, desde ya muchas gracias.

PHP код:
CMD:login(playeridparams[])
{
    if(
CheckAccountExist(playerid))
    {
        new 
pass[24];
        if(
sscanf(params,"s[24]",pass)) return UsoCorrecto(playerid"/login [contraseсa]");
        new 
query[128], DBResult:qresult;
        
format(query128"SELECT * FROM `datos` WHERE (`Nombre` = '%q', `Password` = '%q')",NombreJugador(playerid),pass);
        
qresult db_query(usuarios,query);
        if(
db_num_rows(qresult) >= 1)
        {
            new 
asd[128];
            
format(asdsizeof(asd), "{848484}%s ha ingresado al servidor.",NombreJugador(playerid));
            
SendClientMessageToAll(-1asd);
        }
        else {
            
Error(playerid"ЎContraseсa incorrecta!");
            
intentosfallidos[playerid]++;
            if(
intentosfallidos[playerid] >= 3) {
                
SendClientMessage(playerid, -1"Fuiste expulsado por demasiados intentos de logueo fallidos.");
                
Kick(playerid);
            }
        }
    }
    else
    {
        
SendClientMessage(playeridCOLOR_ROJO"Esta cuenta no se encuentra registrada, por favor usa /registrar [contraseсa] para crear una nueva.");
    }
    return 
1;

Tambiйn dejarй la tabla, a lo mejor el problema es eso.
Код:
db_free_result(db_query(usuarios, "CREATE TABLE IF NOT EXISTS `datos`(`ID` INTEGER PRIMARY KEY AUTOINCREMENT,`Nombre` VARCHAR(24) NOT NULL,`Password` VARCHAR(24) NOT NULL)"));
Reply
#2

Prueba asi esta parte de la query

PHP код:
format(query128"SELECT * FROM `datos` WHERE `Nombre` = '%q' AND `Password` = '%q')"NombreJugador(playerid), pass); 
Reply
#3

Intenta con esto

Код:
CMD:login(playerid, params[])
{
	// Verificas si esta registrado, al mismo tiempo si estб registrado; obtienes la contraseсa!
	new query_get[76], DBResult:cache;
	format(query_get, sizeof(query_get), "SELECT `Password` FROM `datos` WHERE `Nombre` = '%q';", NombreJugador(playerid));
	cache = db_query(usuarios, query_get); //Guardamos el resultado en la variable "cache".
	
	if(!db_num_rows(cache)) //Si no se obtuvo una contraseсa!
	return SendClientMessage(playerid, -1, "No estas registrado!");
	
	//Si se obtuvo una contraseсa
	
	new string[24];
	if(sscanf(params, "s[24]", string))
	return SendClientMessage(playerid, -1, "/Login [contraseсa]");
	
	//Longitud de una contraseсa valida! (Cambia 4 por el mнnimo de caracteres)
	if(strlen(string) < 4 || strlen(string) > 24)
	return SendClientMessage(playerid, -1, "Ingresa una contraseсa valida (4 - 24 caracteres)");

	new password[24]; // Aquн guardaremos la contraseсa obtenida
	db_get_field_assoc(cache, "Password", password, 24); //La almacenamos en la variable
	
	if(!strcmp(password, string, false)) // Comprobamos si la contraseсa obtenida y la insertada son iguales!
	{
	    //Si son iguales sucederб esto!
	    SendClientMessage(playerid, -1, "Has ingresado correctamente al servidor!");
	    
	    new query[67]; //Cargas el resto de datos
	    format(query, sizeof(query), "SELECT * FROM `datos` WHERE `Nombre` = '%q';", NombreJugador(playerid));
	    cache = db_query(usuarios, query);
	    
	    //Cargas en las variables comprobando el cache y usando cache_get_field_assoc/int/float.
	}
	else
	{   //Si la contraseсa fue incorrecta sucedrб esto!
	    SendClientMessage(playerid, -1, "ЎContaseсa incorrecta!");
	    
	    IntentosFallidos[playerid] = IntentosFallidos[playerid] + 1;
	    if(IntentosFallidos[playerid] == 3)
	    {
	        SendClientMessage(playerid, -1, "Fuiste expulsado del servidor por demasiados intentos de logeo fallidos!");
	        Player_DelayKick(playerid); //Esto es necesario o no serб visible el mensaje.
		}
	}
	return true;
}

//-----------------------------------------

//Funciуn para expulsar a un player con retraso
Player_DelayKick(playerid)
{
	SetTimerEx("OnPlayerKicked", (150 + GetPlayerPing(playerid)), false, "i", playerid);
	return 1;
}

forward OnPlayerKicked(playerid);
public OnPlayerKicked(playerid) return Kick(playerid);
Reply
#4

Quote:
Originally Posted by N3cromancer
Посмотреть сообщение
Prueba asi esta parte de la query

PHP код:
format(query128"SELECT * FROM `datos` WHERE `Nombre` = '%q' AND `Password` = '%q')"NombreJugador(playerid), pass); 
Era eso, muchas gracias!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)