[Ajuda] Ajuda Login entrando com qualquer senha MYSQL
#1

PHP код:
case DIALOG_REGISTRO:
        {
            if(!
response) return SendClientMessage(playerid, -1, "Vocк nгo quis digitar uma senha"); 
            if(
strlen(inputtext) < 4 || strlen(inputtext) > 16) /
            {
                new 
Dialog[240]; 
                
SendClientMessage(playerid, -1, "ERRO:{FFFFFF} A senha deve conter de 4 a 16 caracteres!");
                
                
format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocк nгo tem uma Conta registrada\n\nDigite uma senha para Registrar\n\nStatus: {058AFF}N/A Registrado{F8F8FF}\n\nIP: {058AFF}%s", Nome(playerid), IP(playerid));
                
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Registrar", "Cancelar");
               return 
1;
               }
             if(
response)
            {
                new 
Query[100];
                
mysql_format(IDConexao, Query, sizeof(Query), "INSERT INTO `contas`(`Nome`, `Senha`) VALUES ('%s', '%e')", Nome(playerid), inputtext); 
                
mysql_tquery(IDConexao, Query, "Mysql_DadosRegistrados", "i", playerid); 
               
                
Mysql_RegistrarDados(playerid); 
               return 
1;
            }
        } 


PHP код:
case DIALOG_LOGIN:
        {
            if(!
response) return Kick(playerid); 
            if(
strcmp(PlayerInfo[playerid][pSenha], inputtext, true, 20)) 
            {
                new 
Query[70];
                 
mysql_format(IDConexao, Query, sizeof(Query), "SELECT * FROM `Contas` WHERE Nome='%s'", Nome(playerid));
                
mysql_tquery(IDConexao, Query, "Mysql_CarregarDados", "d", playerid);
                
                } else {
                
SendClientMessage(playerid, -1, "ERRO:{FFFFFF} Senha incorreta !");
                
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Digite sua senha abaixo para logar-se", "Logar", "Voltar");
            }
        }
    } 
Reply
#2

PHP код:

pinfo
{
pSenha[128]
}
new 
PlayerInfo[MAX_PLAYERS][pinfo];
OnPlayerConnect(playerid)
{
        new 
senha[128];
        
//aqui coloca a verificaзгo se a conta existe ou nгo para nгo ocorrer erros
        
cache_get_field_content(0, "Senha", senha); // se for diferente de cache_get_field_content altere para a sua versгo do plugin mysql
        
format(PlayerInfo[playerid][pSenha], 128, "%s", senha);
        
//aqui vocк coloca a dialog do login e registro
        
return 1;
}; 
tente assim
Reply
#3

1. Seu registro/login й totalmente inseguro, pois vocк nгo da hash nas senhas.
2. A funзгo strcmp retorna 0 quando as strings comparadas sгo exatamente iguais, entгo vocк deveria colocar
PHP код:
if(!strcmp(...)) 
Provavelmente й isso que estб dando problema, pois vocк compara a string pSenha com inputtext para casos diferentes de zero, isso quer dizer que vocк ta verificando se elas sгo diferentes.
3. Vocк provavelmente nгo tem a pSenha setada como a senha do jogador, visto que vocк ainda nгo carregou os dados deles (suponho), entгo vocк estб comparando uma string nula com inputtext.
Reply
#4

Код:
mysql_format(Conexao, Query, sizeof(Query), "SELECT * FROM contas WHERE Nome='%e' AND Senha='%e'", Nome(playerid),inputtext);
new Cache:Temp = mysql_query(IDConexao, Query, true);
if(!cache_get_row_count(IDConexao))
{
    //se errar a senha
}
else if(cache_get_row_count(IDConexao) == 1)//se acertou a senha
{
    //ver a conta do jogador
    mysql_format(IDConexao, Query, sizeof(Query), "SELECT * FROM contas WHERE Nome='%e'", Nome(playerid));
    mysql_tquery(IDConexao, Query, "Mysql_CarregarDados", "d", playerid);
}
cache_delete(Temp, IDConexao);
Reply
#5

Quote:

mysql_format(Conexao, Query, sizeof(Query), "SELECT * FROM contas WHERE Nome='%e' AND Senha='%e'", Nome(playerid),inputtext);
new Cache:Temp = mysql_query(IDConexao, Query, true);
if(!cache_get_row_count(IDConexao))
{
//se errar a senha
}
else if(cache_get_row_count(IDConexao) == 1)//se acertou a senha
{
//ver a conta do jogador
mysql_format(IDConexao, Query, sizeof(Query), "SELECT * FROM contas WHERE Nome='%e'", Nome(playerid));
mysql_tquery(IDConexao, Query, "Mysql_CarregarDados", "d", playerid);
}
cache_delete(Temp, IDConexao);

Obrigado mano, funcionou perfeitamente.
Reply
#6

PHP код:
if(!strcmp(inputtext, PlayerInfo[playerid][pSenha])) 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)