Fórum Tentativas de login cSharp #572396
08/12/2016
0
Estou fazendo um form de login, porém quero que feche caso o usuário erre 3 vezes o login e senha.
Olhem como eu fiz.
public void logar()
{
sqlConn = new SqlConnection(strConn);
string usuario, senha;
try
{
usuario = tbusuario.Text;
senha = tbsenha.Text;
_Sql = "SELECT COUNT(id_usuario) FROM usuario WHERE usuario = @usuario AND senha = @senha";
SqlCommand cmd = new SqlCommand(_Sql, sqlConn);
cmd.Parameters.Add("@usuario", SqlDbType.VarChar).Value = usuario;
cmd.Parameters.Add("@senha", SqlDbType.VarChar).Value = senha;
sqlConn.Open();
int verdade = (int)cmd.ExecuteScalar();
if (verdade > 0)
{
MessageBox.Show("Logado com Sucesso");
ok = true;
}
else
{
MessageBox.Show("Erro ao Logar");
}
}
catch (SqlException errro)
{
MessageBox.Show(errro + "No Banco");
}
}
private void button1_Click(object sender, EventArgs e)
{
while(cont <= 3)
{
while (conti < 3)
{
logar();
if (ok == true)
{
break;
}
else
{
cont++;
MessageBox.Show("Você possuí mais " + (3 - cont) + " tentativas");
if (cont == 4)
{
Environment.Exit(0);
}
}
}
}
frmPrincipal principal = new frmPrincipal();
principal.Show();
this.Close();
}
Quando o usuário clicar em ok caso dê caso erre o login, eu queria que o usuário digitasse outro login e clicasse novamente em logar.
Porém como está o sistema roda direto as 3 tentativas com o mesmo login e senha.
Vitor Souza
Curtir tópico
+ 0Post mais votado
08/12/2016
Não é necessário usar while(), é só transformar o Login em um método que retorna um valor bool, e caso seja true, prosseguir para o banco, caso false, aumentar o int de número de erros do clique do botão.
Esse é o método mais simples, o método mais complexo iria envolver blocos try-catch em ambos os métodos, além disso eu recomendo que você retire a dependência dos TextBox do método Login, pois se trata de uma lógica de negócio, e não é bom envolver controles de interface nisso.
Abraço.
Lucas Campos
Gostei + 1
Mais Posts
09/12/2016
Vitor Souza
Teria como me mostrar como ficaria o método login sem as dependências dos TextBox? E colocando o método login pra retornar o valor bool.
Obrigado.
Gostei + 0
09/12/2016
Lucas Campos
//Mudaria os parâmetros Logar, colocaria nome e usuário como parâmetro
//Mudaria o retorno de void para bool
public void logar(string usuario, string senha)
{
//recebe os parâmetros do método, isso irá evitar a mistura de interface e o código de acesso à dados
string _usuario = usuario;
string _senha = senha;
try
{
//faz toda sua lógica do banco de dados, se ele conseguiu logar
return true;
//se não conseguiu
return false;
}
catch (SqlException errro)
{
MessageBox.Show(errro + "No Banco");
}
}
//Como fazer a chamada, só um exemplo.
public int erros = 0;
private void button1_Click()
{
string nome = tbusuario.txt;
string senha = tbusuario.txt;
if (erros < 3)
{
if (logar(nome, senha) == false)
erros++;
else
{
//logica caso a senha e usuario esteja correta
}
}
else
{
//logica caso atingir o número permitido de erros
}
}Gostei + 0
09/12/2016
Vitor Souza
Obrigado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)