Fórum Ajuda sobre login #354134
20/02/2008
0
procedure TfrmLogin.btnOkClick(Sender: TObject);
var
s:string;
begin
s:=IntToStr(StrToInt(edtSenha.Text));
DM.cdsLogin.Open; // Abre A tabela Login
if not(DM.cdsLogin.Locate(´Usuario´,frmLogin.edtApelido.Text,[LopartialKey,LocaseInsensitive]))and
not(DM.cdsLogin.Locate(´Senha´,frmLogin.edtSenha.Text,[LopartialKey,LocaseInsensitive])) then
begin
MessageDlg(´Nome ou senha do usuário inválidos.´+#13+13
+ ´Se você esqueceu sua senha, consulte ´+ 13
+ ´o administrador do sistema´, mtError, [mbOK], 0);
EdtSenha.Clear; // limpa o objeto EdtSenha
EdtSenha.SetFocus; //Ajusta o foco para o objeto EdtSenha
end
else
begin
FrmLogin.Hide; //Esconde a tela
FrmPrincipal.ShowModal; //chama a tela FrmMenuPrin no modo modal
FrmLogin.Release; //Remove a tela da memória
frmLogin.Close;
FrmLogin := Nil; //Atribui conteúdo nulo para a variável de tela FrmLogin
end;
end;
end.
tenho em minha tabela cadastrado :
usuario = lskskyblue
senha =123456
e
Usuario =qwer
Senha = 456789
Se eu digitar nos edit
Usuario = qwer
Senha = 123456
e também
Usuario = lskskyblue
Senha = 456789 irão também abrir o sistema como contorno esse problema?
Valeu Galera
Lskskyblue
Curtir tópico
+ 0Posts
21/02/2008
Rodc
O comando Locale posiciona o dataset no registro encontrado, ou seja não precisa fazer Locale para a senha, apenas verifique no registro atual.
procedure TfrmLogin.btnOkClick(Sender: TObject); var s:string; begin s:=IntToStr(StrToInt(edtSenha.Text)); DM.cdsLogin.Open; // Abre A tabela Login if (DM.cdsLogin.Locate(´Usuario´,frmLogin.edtApelido.Text,[LopartialKey,LocaseInsensitive] and DM.cdsLogin.FieldByName(´Senha´).AsString = frmLogin.edtSenha.Text) then begin MessageDlg(´Nome ou senha do usuário inválidos.´+13+13 + ´Se você esqueceu sua senha, consulte ´+ 13 + ´o administrador do sistema´, mtError, [mbOK], 0); EdtSenha.Clear; // limpa o objeto EdtSenha EdtSenha.SetFocus; //Ajusta o foco para o objeto EdtSenha end else begin FrmLogin.Hide; //Esconde a tela FrmPrincipal.ShowModal; //chama a tela FrmMenuPrin no modo modal FrmLogin.Release; //Remove a tela da memória frmLogin.Close; FrmLogin := Nil; //Atribui conteúdo nulo para a variável de tela FrmLogin end; end;
Gostei + 0
21/02/2008
Paullsoftware
:idea: Não use Locate para identificação em login a forma mais segura é usando SQL:
Function ValidaUsuario(wNome,wSenha:String;aCds:TClientDataSet):Boolean; begin Result := False; with aCds do begin close; commandtext := ´select nome, senha from usuarios where upper(nome)=Upper(:nome) and upper(senha)=upper(:senha)´; Params[0].Value := wNome; Params[1].Value := wSenha; Open; if IsEmpty then ExibeMensagem(´I´,´Nome ou Senha Invalidos! Proceda a Correção.´) else Result := True; Close; end; end;
if ValidaUsuario(EditNome.Text,EditSenha.Text,CdsLoginUsuarios) then begin //Instruções no caso de usuario encontrado end;
Gostei + 0
21/02/2008
Lskskyblue
no meu form tenho dois edits e dois botoes
edtusuario ,edtSenha,btnLogar,btnCancelar sera que você poderia esse codigo na unit para mim entender como ele funciona ,pois não sei fazer.
desde já eu lhe agradeço!!!
Gostei + 0
21/02/2008
Paullsoftware
Obrigado amigo, mais ainda tenho muito a aprender... Vivo deixando o pessoal aqui do forum com os ´Cabelos Brancos´ hehehe...
Você pode acrescentar ela abaixo da seção Implemetation, acima da primeira procedure que você tiver ai na sua unit, ou então, como você é iniciante vamos adaptar ao seu botão de login, blz??
procedure TForm1.Button1Click(Sender:TObject); begin with aCds do begin close; commandtext := ´select nome, senha from usuarios where upper(nome)=Upper(:nome) and upper(senha)=upper(:senha)´; Params[0].Value := EditNome.Text; Params[1].Value := EditSenha.Text; Open; if IsEmpty then ExibeMensagem(´I´,´Nome ou Senha Invalidos! Proceda a Correção.´) Close; end; end;
dá uma olhada nesse artigo do Everson Borges sobre a ultilização de Telas de login...
https://www.devmedia.com.br/articles/viewcomp.asp?comp=470&hl=
Curso completo do Luciano Pimenta: [url=https://www.devmedia.com.br/articles/viewcomp.asp?comp=4746&hl=]Criando um Sistema Complento com Delphi 7 DbExpress e FireBird[/url] as aulas são 0800 para assinantes da ClubeDelphi, Um abraço! :wink:
Gostei + 0
24/02/2008
Obrunno
Crie uma Query com o Nome QLogin, que tenha os campos ´usuario´ e ´senha´. Na propriedade SQL digite:
select * from [NomedaTabeladeUsuarios] where usuario =:USER
No botão logar digite:
with DM.QLogin do
begin
close;
parameters[0].value := frmLogin.edtApelido.Text;
open;
end;
if DM.QLogin.RecordCount = 1 then
begin
if DM.QloginSenha.Value = frmLogin.edtSenha.Text then
begin
FrmLogin.Hide;
FrmPrincipal.ShowModal;
FrmPrincipal.Free;
close;
end;
else
begin
showmessage(´Senha não confere!´);
frmLogin.edtSenha.Text := ´´;
frmLogin.edtSenha.SetFocus;
end;
end
else
begin
showmessage(´Usuário inexistente!´);
frmLogin.edtApelido.Text := ´´;
frmLogin.edtSenha.Text := ´´;
frmLogin.edtApelido.SetFocus;
end;
Obs.: A instrução acima funciona perfitamente com conexões de banco de dados ADO. Se vc estiver usando BDE troque ´parameters[0].value := frmLogin.edtApelido.Text;´ por ´params[0].value := frmLogin.edtApelido.Text;´.
Vlw´s
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)