[Ajuda] Entrando com qualquer senha MySQL
#1

Qualquer senha entra na conta, atй se nгo colocar nada...

Registro:
PHP Code:
        case DIALOG_REGISTRO
        { 
            if(!
response) return Kick(playerid); // se clicar em cancelar na dialog registro ira kickar o jogador 
             
            
if(strlen(inputtext) < || strlen(inputtext) > 20// se a senha tiver menos de 4 ou mais de 20 caracteres ira retornar a dialog 
            

                
SendClientMessage(playerid, -1"ERRO:{FFFFFF} A senha deve conter de 4 a 20 caracteres!"); 
                new 
Dialog[240]; // variavel da dialog registro 
                
format(Dialogsizeof(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"PlayerInfo[playerid][pNome], PlayerInfo[playerid][pIP]); 
                
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_STYLE_PASSWORD"Registro"Dialog"Registrar""Cancelar"); 
                } else { 
// se nгo conter entre 4 e 20 caracteres ira retornar ao registro 
                
new Query[100]; // variavel com 100 celulas para inserir as informaзхes de registro na tabela 
                
mysql_format(IDConexaoQuerysizeof(Query), "INSERT INTO `Contas`(`Nome`, `Senha`) VALUES ('%s', '%s')"PlayerInfo[playerid][pNome], inputtext); // formatamos a query para inserir na tabela do banco de dados 
                
mysql_tquery(IDConexaoQuery"DadosRegistrados""i"playerid); // fazemos a consulta e enviamos o resultado para a callback DadosRegistrados 
                // enviamos para a callback DadosRegistrados para fazer uma especia de  DEBUG, e tambem para darmos uma ID para a conta no banco de dados 
                
RegistrarDados(playerid); // chamamos a funзгo RegistrarDados para adicionar os valores nas variaveis do player 
            

        } 
Login:
PHP Code:
        case DIALOG_LOGIN
        { 
            if(!
response) return Kick(playerid); // se clicar em cancelar na dialog login ira kickar o jogador 
            
if(!strcmp(PlayerInfo[playerid][pSenha], inputtexttrue20)) //comparamos a variavel coma senha do player com a senha digitada 
            
// se a comparaзгo for correta vamos realizar a consulta para adicionar os valores contidos na tabela para as variaveis do player. 
                
new Query[270]; 
                
mysql_format(IDConexaoQuerysizeof(Query), "SELECT * FROM `Contas` WHERE Nome='%s'"PlayerInfo[playerid][pNome]); 
                
mysql_tquery(IDConexaoQuery"CarregarContas""d"playerid); 
                
// Formatamos a Query realizamos a consulta e enviamos o resultado para a callback CarregarContas 
                
} else { 
                
// comparaзгo sem sucesso :: 
                
SendClientMessage(playerid, -1"ERRO:{FFFFFF} Senha incorreta !"); 
                
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Digite sua senha:""Digite sua senha abaixo para logar-se""Logar""Voltar"); 
            } 
        } 
Reply
#2

Code:
SELECT * FROM `Contas` WHERE Nome='%s'
Essa query estб selecionando apenas o nome do usuбrio e nгo confirmando se a senha bate.

Adicione mais uma condicional na query verificando a senha.
Reply
#3

Quote:
Originally Posted by Buda
View Post
Code:
SELECT * FROM `Contas` WHERE Nome='%s'
Essa query estб selecionando apenas o nome do usuбrio e nгo confirmando se a senha bate.

Adicione mais uma condicional na query verificando a senha.
Nгo funcionou..
Reply
#4

Quote:
Originally Posted by Ramires
View Post
Nгo funcionou..
Mostra o que vocк fez. Se nгo funcionou vocк fez errado.
Reply
#5

Voзe nao esta usando strcmp correctamente.
Para comeзar voзe esta com o ignorecase em true:

Code:
if(!strcmp(PlayerInfo[playerid][pSenha], inputtext, true, 20))
                                                    ^^^^
O que quer dizer que se a senha for "SeNhA" eu posso meter "senha" que loga na mesma.

E segundo, voзe esta usando ! antes do strcmp para quando a senha esta correta.
Mas ! й usado para quando nao й correto.


Quote:
Originally Posted by Buda
View Post
Code:
SELECT * FROM `Contas` WHERE Nome='%s'
Essa query estб selecionando apenas o nome do usuбrio e nгo confirmando se a senha bate.

Adicione mais uma condicional na query verificando a senha.
A query esta correcta, ele esta pegando todos (*) os dados da tabela "Contas" onde o Nome й igual ao do jogador.
Reply
#6

Quote:
Originally Posted by Andre02
View Post
Voзe nao esta usando strcmp correctamente.
Para comeзar voзe esta com o ignorecase em true:

Code:
if(!strcmp(PlayerInfo[playerid][pSenha], inputtext, true, 20))
                                                    ^^^^
O que quer dizer que se a senha for "SeNhA" eu posso meter "senha" que loga na mesma.

E segundo, voзe esta usando ! antes do strcmp para quando a senha esta correta.
Mas ! й usado para quando nao й correto.




A query esta correcta, ele esta pegando todos (*) os dados da tabela "Contas" onde o Nome й igual ao do jogador.
Fiz o que vocк disse sу que agora a senha certa estб dando que estб incorreta.
Reply
#7

Deixa mano, foi.. Obrigado a todos!
Reply
#8

Sу que tem um problema, quando nгo escreve nada na dialog entra na conta, pode me ajudar?
Reply
#9

Antes da verificaзгo do strcmp, verifica se o tamanho do inputtext й maior que zero.

Exemplo
Code:
strlen(inputtext) && !strcmp(PlayerInfo[playerid][pSenha], inputtext, true, 20)
Reply
#10

Valeu mano, funfou sou novo em MySQL, usei um sistema de base..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)