Fórum Login que indique individualmente se Usuário inválido ou senha Inválida #490111
25/08/2014
0
O que está faltando ou o que tem de mais ?
Acho que o problema está no SELECT e nos if, mas não sei o que fazer...
Agradeço toda ajuda...
private void BtnEntrar_Click(object sender, EventArgs e)
{
try
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca.mdb;Jet OLEDB:Database Password = 123");
OleDbCommand comando = new OleDbCommand("SELECT * FROM Funcionario F " + " INNER JOIN Perfil P ON F.Perfil = P.IDPerfil Where F.Login = @Login And F.Senha = @Senha AND F.Situacao = true", conexao);
comando.Parameters.AddWithValue("@Login ", loginTextBox.Text);
comando.Parameters.AddWithValue("@Senha", senhaTextBox.Text);
conexao.Open();
OleDbDataReader reader = null;
reader = comando.ExecuteReader(CommandBehavior.CloseConnection);
if ((reader.HasRows) && (reader.Read()))
{
if (loginTextBox.Text != reader["login"].ToString())
{
MessageBox.Show("Usuário Inválido !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
loginTextBox.Clear();
loginTextBox.Focus();
}
else if (senhaTextBox.Text != reader["senha"].ToString())
{
MessageBox.Show("Senha Inválida !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
senhaTextBox.Clear();
senhaTextBox.Focus();
}
else
{
usuarioConectado = loginTextBox.Text;
NivelAcesso = (reader["Descricao"].ToString());
usuConectNome = (reader["F.Nome"].ToString());
FrmPrincipal frmp = new FrmPrincipal();
frmp.NivelAcesso = Convert.ToString(NivelAcesso);
frmp.usuarioConectado = usuarioConectado;
frmp.usuConectNome = usuConectNome;
frmp.Show();
this.Hide();
}
reader.Close();
}
}
catch(Exception ex)
{
MessageBox.Show("Não foi Possível Entrar !" + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Jair Souza
Curtir tópico
+ 0Post mais votado
26/08/2014
SELECT F.Senha FROM Funcionario F " + " INNER JOIN Perfil P ON F.Perfil = P.IDPerfil Where F.Login = @LOGIN AND F.Situacao = true
Kelvin Ott
Gostei + 1
Mais Posts
26/08/2014
Jair Souza
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140826-185417.png[/img]
Tentei dessa outra maneira, e acontece algo muito estranho, quando se digita o login ou senha errado os "if" atuam e dão a mensagem e quando digitado login e senha corretos só entra pro primeiro funcionário(Não consigo entender isto), para os outros 24 funcionário cadastrados da a mensagem de inválido...
OleDbCommand comando = new OleDbCommand("SELECT * FROM Funcionario F " + " INNER JOIN Perfil P ON F.Perfil = P.IDPerfil Where F.Login = @Login OR F.login IS NOT NULL And F.Senha = @Senha OR F.Senha IS NOT NULL AND F.Situacao = true", conexao);[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140826-190350.png[/img]
...e assim não entra nos "if" :
OleDbCommand comando = new OleDbCommand("SELECT * FROM Funcionario F " + " INNER JOIN Perfil P ON F.Perfil = P.IDPerfil Where F.Login = @login OR F.Login Is Null AND F.Senha = @senha OR F.Senha Is Null AND F.Situacao = true", conexao);Gostei + 0
27/08/2014
Joel Rodrigues
SELECT LOGIN, SENHA FROM USUARIOS WHERE LOGIN=@Login
Primeira verificação: se não retornar nenhuma linha, é porque o login não existe.
Segunda verificação: se retornar uma linha (o login está correto), verificar se o conteúdo da coluna SENHA é igual ao que foi digitado. Se não for, a senha está incorreta.
Gostei + 1
27/08/2014
Jair Souza
Se não parametrizo a senha como posso compará-la ?
...o que preciso mudar neste meu código inicial, objetivamente ?
Gostei + 0
27/08/2014
Joel Rodrigues
SE o login estiver correto, então você compara com a senha que veio do select.
Gostei + 1
27/08/2014
Kelvin Ott
Gostei + 1
27/08/2014
Jair Souza
Gostei + 0
27/08/2014
Jair Souza
else if (senhaTextBox.Text != reader["Senha"].ToString())
Como será ?
Gostei + 0
28/08/2014
Kelvin Ott
//Se entrar aqui o login é válido
if(reader.HasRows)
{
//Validação de senha, se for igual a senha também está correta
if(senhaTextBox.Text == reader["senha"].ToString())
{
}
else
{
//Mensagem senha errada
}
}
else
{
//Mensagem login errado
}Gostei + 1
28/08/2014
Jair Souza
Estava no código inicial, mas acabou ficando de fora, rrrrs...
OleDbCommand comando = new OleDbCommand("SELECT * FROM Funcionario F " + " INNER JOIN Perfil P ON F.Perfil = P.IDPerfil Where F.Login = @Login And F.Senha = @Senha AND F.Situacao = true", conexao);Gostei + 0
28/08/2014
Joel Rodrigues
//Se entrar aqui o login é válido
if(reader.HasRows)
{
//Validação de senha, se for igual a senha também está correta
if(senhaTextBox.Text == reader["senha"].ToString())
{
if(Convert.ToBoolean(reader["ativo"])
{
// Usuário ativo e senha correta
}
else
{
// Mensagem de usuário inativo
}
}
else
{
//Mensagem senha errada
}
}
else
{
//Mensagem login errado
}
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)