1 hora atrás
(Esta mensagem foi modificada pela última vez a: 1 hora atrás por White_Blue.)
Repare na sequência de eventos:
Você precisa ler o salt e a senha já hasheada do arquivo do jogador antes de fazer a comparação. Apenas depois que a senha for validada, você pode chamar CarregarDados para carregar o resto das informações.
- O jogador clica para logar;
- O seu código executa a função `SHA256_PassHash` usando o valor armazenado em `PlayerInfo[playerid][Salt]` como salt;
- Depois, compara o resultado com `PlayerInfo[playerid][pSenha]`;
- Somente se a comparação for bem-sucedida, você chama CarregarDados(playerid).
Você precisa ler o salt e a senha já hasheada do arquivo do jogador antes de fazer a comparação. Apenas depois que a senha for validada, você pode chamar CarregarDados para carregar o resto das informações.
Código PHP:
else // linha 609
{
new senhaformatada[MAX_PASSWORD_LEN];
// PlayerInfo[playerid][Salt] e PlayerInfo[playerid][pSenha] estão vazios
SHA256_PassHash(SenhaInformada[playerid], PlayerInfo[playerid][Salt], senhaformatada, MAX_PASSWORD_LEN);
if(!strcmp(senhaformatada, PlayerInfo[playerid][pSenha], false, MAX_PASSWORD_LEN))
{
CarregarDados(playerid); // Carrega os dados só depois do login, mas é tarde demais para a verificação.
}
else
{
Erro[playerid] ++;
if(Erro[playerid] == 3) Kick(playerid), ErrorMsg(playerid, "Voce foi kickado por errar a senha muitas vezes.");
Dialog_Show(playerid, LoginServidor, DIALOG_STYLE_PASSWORD, "Efetuando login no servidor", "Digite sua senha para logar. \n*Sua senha estava incorreta", "Confirmar", "Cancelar");
}
}
Não estou disponível para realizar serviços relacionados ao SA-MP e não costumo responder a mensagens privadas, a menos que estejam relacionadas à moderação do fórum.
