login (Validação de senha)
14/03/2006
0
Estou fazendo uma tela de login. a verificação é feita em uma tabela Firebird 1.5, onde o campos sao os seguintes:
USUARIO VARCHAR(50) CHARACTER SET WIN1252 NOT NULL COLLATE PXW_INTL850,
SENHA VARCHAR(10) NOT NULL,
bom, na verificação abaixo a checagem de usuário passa tranaquilo, mas na checagem da senha gera o seguinte erro quando a
senha digitada no edit_Senha confere com a senha armazenada no banco: ´trying to store a string of lenght 11 into a field that only contain 10´
Observações:
------------
Edit_Senha.passwordChar := *
Edit_Senha.MaxLenght := 10
Todos os Forms sao MDI, menos o de Login, assim como descrito por massuda no tópico: http://forum.devmedia.com.br/viewtopic.php?t=62225&highlight=splash&sid=776f69e8e9c9603666788d7499c14eee
quem puder me ajudar, por favor, postem aqui.
USUARIO VARCHAR(50) CHARACTER SET WIN1252 NOT NULL COLLATE PXW_INTL850,
SENHA VARCHAR(10) NOT NULL,
bom, na verificação abaixo a checagem de usuário passa tranaquilo, mas na checagem da senha gera o seguinte erro quando a
senha digitada no edit_Senha confere com a senha armazenada no banco: ´trying to store a string of lenght 11 into a field that only contain 10´
Observações:
------------
Edit_Senha.passwordChar := *
Edit_Senha.MaxLenght := 10
Todos os Forms sao MDI, menos o de Login, assim como descrito por massuda no tópico: http://forum.devmedia.com.br/viewtopic.php?t=62225&highlight=splash&sid=776f69e8e9c9603666788d7499c14eee
quem puder me ajudar, por favor, postem aqui.
procedure TLogin.Button1Click(Sender: TObject); begin // Checagem Tbl_Login.Close; Tbl_Login.SelectSQL.Clear; Tbl_Login.SelectSQL.add(´SELECT * FROM Login WHERE USUARIO Like:Consulta ´ ); Tbl_Login.Params[0].AsString; Tbl_Login.ParamByName(´Consulta´).AsString:=´´+´¬´+Edit_Usuario.Text+´¬´; Tbl_Login.open; If Tbl_LoginUSUARIO.AsString <> Edit_Usuario.Text then begin ShowMessage(´Usuário ´+Edit_Usuario.Text+´ não cadastrado !´); Edit_Usuario.SetFocus; end else begin // Checagem Tbl_Login.Close; Tbl_Login.SelectSQL.Clear; Tbl_Login.SelectSQL.add(´SELECT * FROM Login WHERE SENHA Like:Consulta ´ ); Tbl_Login.Params[0].AsString; Tbl_Login.ParamByName(´Consulta´).AsString:=´´+´¬´+Edit_Senha.Text+´¬´; Tbl_Login.open; If Tbl_LoginSENHA.AsString <> Edit_Senha.Text then begin ShowMessage(´Senha inválida. Tente novamente.´); Edit_Senha.SetFocus; end else begin Close; end; end; end;
Mahdak
Curtir tópico
+ 0
Responder
Posts
14/03/2006
Paullsoftware
Existe uma falha na sua consulta, pelomenos ao meu ver...
quando você faz:
e essa outra aqui:
[i:526ac67075][b:526ac67075]se Existir um usuário chamado Flavia e Outro Chamado Flaviana toda vez que digitar Flavia vai retornar dois registros...[/b:526ac67075][/i:526ac67075]
mesmo se alguém digitar o nome do usuario errado ele vai trazer a senha mais próxima devido a consulta com like no caso de campos que devem ser exatamente iguais. Tanto na [b:526ac67075]Entrada[/b:526ac67075] quando na [b:526ac67075]Resposta[/b:526ac67075] é correto que vc use assim:
espero ter ajudado :wink:
quando você faz:
Tbl_Login.SelectSQL.add(´SELECT * FROM Login WHERE USUARIO Like:Consulta ´ );
e essa outra aqui:
Tbl_Login.ParamByName(´Consulta´).AsString:=´´+´¬´+Edit_Usuario.Text+´¬´;
[i:526ac67075][b:526ac67075]se Existir um usuário chamado Flavia e Outro Chamado Flaviana toda vez que digitar Flavia vai retornar dois registros...[/b:526ac67075][/i:526ac67075]
mesmo se alguém digitar o nome do usuario errado ele vai trazer a senha mais próxima devido a consulta com like no caso de campos que devem ser exatamente iguais. Tanto na [b:526ac67075]Entrada[/b:526ac67075] quando na [b:526ac67075]Resposta[/b:526ac67075] é correto que vc use assim:
with Tbl_Login do begin Close; SelectSQL.Clear; SelectSQL.add(´SELECT * FROM Login WHERE USUARIO =:User and Senha =:Pass ´ ); ParamByName(´User´).AsString:=Edit_Usuario.Text; ParamByName(´Pass´).AsString:=Edit_Senha.Text; open; if IsEmpy then begin MessageDlg(´Usuário ou Senha Inválidos´,MtError,[MbOk],0); Edit Edit_Usuario.Clear; Edit_Senha.Clear; Edit_Usuario.Setfocus; Exit; end else begin //Comandos a serem executados no caso dos dados serem corretos! end; end;
espero ter ajudado :wink:
Responder
14/03/2006
Mahdak
brother... ando tao perturbado aqui que nem tinha notado esses detalhes... valleu, o seu exemplo caiu como uma luva...
Abração! :lol:
Abração! :lol:
Responder
Clique aqui para fazer login e interagir na Comunidade :)