LOGIN COM DELPHI E MYSQL

15/01/2016

0

Estou tentanto colocar login com senha em meu sistema, mas está apresentando erro. Gostaria também que descriptografasse MD5, pois minha senha está com MD5 ao salvar.

if (edLogin.Text = '') then
begin
ShowMessage('O campo Login está vazio');
end
else
if (edSenha.Text = '') then
begin
ShowMessage('O campo Senha está vazio');
end
else
begin
btLogin.Enabled := false;
dm_conexoes.qry_login.Active := false;
dm_conexoes.qry_login.SQL.Clear;
dm_conexoes.qry_login.SQL.Append('SELECT FIRST 1 * FROM LOGIN WHERE LOGIN = :Login AND SENHA = :Senha');
dm_conexoes.qry_login.ParamByName('Login').Asstring := edLogin.Text;
dm_conexoes.qry_login.ParamByName('Senha').Asstring := edSenha.Text;
dm_conexoes.qry_login.Open;

if dm_conexoes.qry_login.isEmpty then
begin
ShowMessage('A senha está incorreta!');

edSenha.Text := '';
edSenha.SetFocus;
btLogin.Enabled := true;
end
else
begin
frmLogin.Close;
end;
end;
Wilter Porto

Wilter Porto

Responder

Post mais votado

15/01/2016

Wilter, Tenho alguns projetos que realizo a criptografia.
Para cadastrar e quando realizo o login criptografo os dados inseridos .

Segue a Função


function Criptografar(wStri: String): String;
var Simbolos : array [0..4] of String;
x : Integer;
begin
Simbolos[1]:=
'ABCDEFGHIJLMNOPQRSTUVXZYWK ~!@#$%^&*()';

Simbolos[2]:=
'ÂÀ©Øû׃çêùÿ5Üø£úñѪº¿®¬¼ëèïÙýÄÅÉæÆôöò»Á';

Simbolos[3]:='abcdefghijlmnopqrstuvxzywk1234567890';

Simbolos[4]:='áâäàåíóÇü龶§÷ÎÏ-+ÌÓ߸°¨·¹³²Õµþîì¡«½';

for x := 1 to Length(Trim(wStri)) do begin
if pos(copy(wStri,x,1),Simbolos[1])>0 then
Result := Result+copy(Simbolos[2],
pos(copy(wStri,x,1),Simbolos[1]),1)

else if pos(copy(wStri,x,1),Simbolos[2])>0 then
Result := Result+copy(Simbolos[1],
pos(copy(wStri,x,1),Simbolos[2]),1)

else if pos(copy(wStri,x,1),Simbolos[3])>0 then
Result := Result+copy(Simbolos[4],
pos(copy(wStri,x,1),Simbolos[3]),1)

else if pos(copy(wStri,x,1),Simbolos[4])>0 then
Result := Result+copy(Simbolos[3],
pos(copy(wStri,x,1),Simbolos[4]),1);
end;
end;

Raimundo Pereira

Raimundo Pereira
Responder

Mais Posts

15/01/2016

Raimundo Pereira

Minha Rotina de cadastro de Login


procedure TFCADUSER.CadastrarClick(Sender: TObject);
VAR
LOGIN_CR:STRING;
SENHA_CR:STRING;
SQL_SCRYP:STRING;
script_insert:STRING;
ACESSO_TOTAL:STRING;

begin


if CBX_FILIAL.Text='' then
BEGIN
ShowMessage('Informe a Unidade');
CBX_FILIAL.SetFocus;
CBX_FILIAL.DroppedDown:=true;
exit;
END;

if ED_NOME.Text='' then
BEGIN
ShowMessage('Informe o nome do usuário');
ED_NOME.Text;
ED_NOME.SetFocus;
exit;
END;


if ED_LOGIN.Text='' then
BEGIN
ShowMessage('Informe o login do usuário');
ED_LOGIN.SetFocus;
exit;
END;


if ED_EMAIL.Text='' then
BEGIN
ShowMessage('Informe o email do usuário');
ED_EMAIL.SetFocus;
exit;
END;

if ED_SENHA.Text='' then
BEGIN
ShowMessage('Informe a senha de acesso!');
ED_SENHA.SetFocus;
exit;
END;

if ED_CONFIRME_SENHA.Text='' then
BEGIN
ShowMessage('Informe a confirmação da senha de acesso!');
ED_CONFIRME_SENHA.SetFocus;
exit;
END;

if ED_CONFIRME_SENHA.Text<>ED_SENHA.Text then
BEGIN
ShowMessage('Senhas não coincidem, tente novamente');
ED_CONFIRME_SENHA.Clear;
ED_SENHA.Clear;
ED_SENHA.SetFocus;
exit;
END;


if CK_ACESSO_TOTAL.Checked=TRUE then
BEGIN
ACESSO_TOTAL:='S';
END
ELSE
BEGIN
ACESSO_TOTAL:='N';
END;


BEGIN
LOGIN_CR:='';
SENHA_CR:='';
SQL_SCRYP:='';
LOGIN_CR:=Criptografar(ED_LOGIN.Text);
SENHA_CR:=Criptografar(ED_SENHA.Text);

SQL_SCRYP:='SELECT * FROM SV_ACESSO WHERE LOGIN_CRYP='
+''''+LOGIN_CR+''''+
' AND FILIAL='
+''''+CBX_FILIAL.TEXT+''''+';';
DM.Q_LOGIN.CLOSE;
DM.Q_LOGIN.SQL.CLEAR;
DM.Q_LOGIN.SQL.Text:=SQL_SCRYP;
DM.Q_LOGIN.OPEN;

if DM.Q_LOGIN.RecordCount>0 then
BEGIN
ShowMessage('Usuário ['+ED_LOGIN.Text+'], já existe na Filial ['+CBX_FILIAL.Text+']');
end
else
begin

script_insert:=
'INSERT INTO SV_ACESSO (NOME,LOGIN_CRYP,SENHA_CRYP,FILIAL,EMAIL,ACESSO_TOTAL)VALUES ('
+''''+ED_NOME.Text+''''
+','+''''+LOGIN_CR+''''+
','+
''''+SENHA_CR+''''+
','+
''''+CBX_FILIAL.Text+''''+
','+
''''+ED_EMAIL.Text+''''+
','+''''+ACESSO_TOTAL+''''+

');';

TRY
DM.Q_LOGIN.CLOSE;
DM.Q_LOGIN.SQL.Text:=script_insert;
DM.Q_LOGIN.ExecSQL;

DM.Q_LOGIN.close;
DM.Q_LOGIN.SQL.Text:=SQL_SCRYP;
DM.Q_LOGIN.OPEN;
begin
if DM.Q_LOGIN.RecordCount>0 then
BEGIN
ShowMessage('Usuário ['+ED_LOGIN.Text+'], Cadastrado na Filial ['+CBX_FILIAL.Text+'], Código ['+IntToStr(DM.Q_LOGIN.FieldByName('ID').AsInteger)+']');
END
ELSE
BEGIN
ShowMessage('Falha ao tentar gravar Usuário ['+ED_LOGIN.Text+'], na Filial ['+CBX_FILIAL.Text+']');
END;
end;
EXCEPT
exit;
END;

end;
DM.Q_LOGIN.close;
end;
end;
Responder

15/01/2016

Raimundo Pereira

Minha Tela de Login

procedure TFLOGIN.ConectarClick(Sender: TObject);
BEGIN
FP.ACESSO_FULL:='';
if FP.IP_.LocalIP='10.0.6.135' then
BEGIN
FP.LOGADO:='S';
FP.ACESSO_FULL:='S';
FP.USER_LOGADO:='RAIMUNDO TI';
FP.FILIAL_LOGADA:='BASE DESENVOLVIMENTO';
LIB_ACESSO.Click;
CLOSE;
END
ELSE
BEGIN
FP.LOGADO:='';

if CBX_FILIAL.Text='' then
BEGIN
ShowMessage('Informe a Filial !');

CBX_FILIAL.SetFocus;
// CBX_FILIAL.DroppedDown:=true;
EXIT;
END;


if ED_LOGIN.Text='' then
BEGIN
ShowMessage('Informe o login de acesso !');
ED_LOGIN.SetFocus;
EXIT;
END;

if ED_SENHA.Text='' then
BEGIN
ShowMessage('Informe o sua senha de acesso !');
ED_SENHA.SetFocus;
EXIT;
END;

if(ED_LOGIN.Text<>'')and (ED_SENHA.Text<>'') and (CBX_FILIAL.Text<>'') then
begin
LOGIN_CR:='';
SENHA_CR:='';
SQL_SCRYP:='';

LOGIN_CR:=Criptografar(ED_LOGIN.Text);
SENHA_CR:=Criptografar(ED_SENHA.Text);

SQL_SCRYP:='SELECT * FROM SV_ACESSO WHERE LOGIN_CRYP='
+''''+LOGIN_CR+''''+
' AND SENHA_CRYP='
+''''+SENHA_CR+''''+' AND FILIAL='
+''''+CBX_FILIAL.TEXT+''''+';';

DM.Q_LOGIN.CLOSE;
DM.Q_LOGIN.SQL.CLEAR;
DM.Q_LOGIN.SQL.Text:=SQL_SCRYP;
DM.Q_LOGIN.OPEN;

if DM.Q_LOGIN.RecordCount=1 then
BEGIN
Tentativa:=5;
LOGIN_CR:='';
SENHA_CR:='';
SQL_SCRYP:='';
FP.USER_LOGADO:=(DM.Q_LOGIN.FieldByName('NOME').AsString);
FP.FILIAL_LOGADA:=(DM.Q_LOGIN.FieldByName('FILIAL').AsString);
FP.LOGADO:='S';
LIB_ACESSO.Click;
ShowMessage(DM.Q_LOGIN.FieldByName('NOME').AsString+', SEJA BEM VINDO !');

fp.VLOG.Enabled:=true;
FP.VTEC.Enabled:=FALSE;
CLOSE;

END
ELSE
BEGIN


if tentativa=0 then
begin
ShowMessage('Acesso negado, Tentativas esgotadas!');
application.Terminate;
end
else
begin
Tentativa:=tentativa-1;
if TENTATIVA>0 then
begin

ShowMessage('Acesso negado, Tente novamente! [Tentativas Restantes '+IntToStr(TENTATIVA)+']');
LOGIN_CR:='';
SENHA_CR:='';
SQL_SCRYP:='';
ED_LOGIN.Clear;
ED_SENHA.Clear;
ED_LOGIN.SetFocus;
END;
end;
END;
END;

end;
end;
Responder

15/01/2016

Raimundo Pereira

Espero que a rotina ajude,

Da uma olhada e uma enxugada no código de acordo com a sua necessidade.
Responder

15/01/2016

Wilter Porto

Vou fazer uns testes aqui usando o que me passou. Pelo vi vc não usa o MD5 mas usa uma criptografia própria certo?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar