smack_dead Posted March 5, 2014 at 03:38 PM Report #547633 Posted March 5, 2014 at 03:38 PM (edited) Ola amigos, então gostava de saber como é que posso fazer uma função login com verificação se a palavra pass esta igual a da bd... o exercicio e este--- ao efetuar o login devera ser verificado se a palavra chave fornecida confere com a palavra chave do utilizador caso o utilizador nao exista ou a senha fornecida nao coincida com a senha da bd entao a variavel logged =false. a password esta encriptada na bd possivelmente.... Edited March 8, 2014 at 01:50 AM by smack_dead
nunopicado Posted March 5, 2014 at 03:45 PM Report #547636 Posted March 5, 2014 at 03:45 PM Primeira coisa que tens de saber (acho que já te tinha dito isto): - Tabela da base de dados onde estão o utilizador e palavra-passe - Nomes dos campos nessa tabela para o utilizador e palavra-passe - Encriptação: Precisas ter uma função que te encripte a palavra-passe, tanto para login, como para criação/edição do utilizador na DB Já tens estas 3 coisas? 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
Kline777 Posted March 5, 2014 at 03:47 PM Report #547637 Posted March 5, 2014 at 03:47 PM Mas qual é a tua dificuldade ao certo? puseste esse codigo e nao funciona?
smack_dead Posted March 5, 2014 at 04:00 PM Author Report #547639 Posted March 5, 2014 at 04:00 PM sim, já tenho essas 3 coisas, apesar da função para encriptar ainda não a ter na ''mão'', mas depois e so acrescentar .. eu com aquele código já fui buscar as tabelas... so que nao ententi aquele "result".... tenho de declarar penso eu ... sim ainda esta incompleto porque ainda não faz a verificação nem nada...
nunopicado Posted March 5, 2014 at 04:08 PM Report #547641 Posted March 5, 2014 at 04:08 PM sim, já tenho essas 3 coisas, apesar da função para encriptar ainda não a ter na ''mão'', mas depois e so acrescentar Pois... Por o telhado na casa sem lhe meter primeiro os alicerces é complicado. Faz primeiro isso... eu com aquele código já fui buscar as tabelas... so que nao ententi aquele "result".... tenho de declarar penso eu ... Chocked... Alguma vez fizeste uma função em Delphi? Todas elas têm pré-declarada uma variável imaginária Result, do mesmo tipo de dados da própria função, onde guardas o resultado dessa função. 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
smack_dead Posted March 5, 2014 at 04:25 PM Author Report #547643 Posted March 5, 2014 at 04:25 PM var resust : string; mas assim achas que ele guarda ?
nunopicado Posted March 5, 2014 at 04:30 PM Report #547645 Posted March 5, 2014 at 04:30 PM var resust : string; mas assim achas que ele guarda ? Não. Aliás, tenho a certeza que não guarda nada... Em cima, eu disse: Chocked... Alguma vez fizeste uma função em Delphi? Todas elas têm pré-declarada uma variável imaginária Result, do mesmo tipo de dados da própria função, onde guardas o resultado dessa função. No outro tópico onde abordaste a questão, disseste que o sistema de login tinha de estar dentro de uma função. Logo, a função já tem a variável Result, não tens de a declarar. Quanto a guardar, não é suposto guardar nada... É uma verificação, e só tem de termina a função com o resultado dessa verificação. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
smack_dead Posted March 5, 2014 at 04:41 PM Author Report #547646 Posted March 5, 2014 at 04:41 PM (edited) sim e esta .... Edited March 8, 2014 at 01:50 AM by smack_dead
nunopicado Posted March 5, 2014 at 04:51 PM Report #547648 Posted March 5, 2014 at 04:51 PM Então, altera-a para o seguinte: Onde estás a usar a variável Result, estás a atribuir-lhe valores de condições (booleanos). Logo, a tua função tem de devolver um valor booleano (True, login feito; False, login falhado). Além disso, nas condições estás a usar as variáveis User e Pass (foram os meus exemplos, não analisaste o código para corrigir para a tua realidade). A tua função recebe esses valores em variáveis chamadas AUsername e APassword. Por fim, se fazes, como está nessa função, a query antes de pesquisar pelo menos o utilizador, vais receber toda a tabela de utilizadores. Como tens, ele apenas te vai comparar com o primeiro da lista, e falha em todos os outros, porque não estás a percorrer a tabela. Sugestão: A query deve incluir ela própria o nome do utilizador, por forma a retornar apenas esse, e não toda a tabela. Depois sim, vai confirmar se a pass é válida. Exemplo: function Twebserver.Login(AUserName, APassword: string) : string; begin D.ADOQuerylogin.SQL.Text:='Select codutilizador, codacesso from utilizadores where codutilizador="'+AUserName+'"'; D.ADOQuerylogin.Open; // Verifica o utilizador Result:= D.ADOQuerylogin.utilizadores.RecordCount>0; // Se houver registos na query, é porque encontrou o utilizador if Result // Se o utilizador for correcto, testa a pass then Result:= Encrypt(APassWord) = Ligacoes.ADOQuerylogin.password.FielbyName('codacesso').AsString; D.ADOQuerylogin.Close; end; Lembras-te de falarmos do RecordCount? 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
smack_dead Posted March 5, 2014 at 05:02 PM Author Report #547649 Posted March 5, 2014 at 05:02 PM (edited) sim vou ter de usar o recordcount aqui tmb?? e entao como e que posso fazer para ela nao carregar os useres todos(é o ausername+''' -???) , pq sim agora q falas nisso ela assim carrega todos... so nao entendo e de onde deriva aquele result... Edited March 5, 2014 at 05:13 PM by smack_dead
nunopicado Posted March 5, 2014 at 05:14 PM Report #547650 Posted March 5, 2014 at 05:14 PM Verifica o meu ultimo exemplo... Com a alteração da query já ele não carrega tudo. Carrega o AUsername pedido, ou nenhum, caso não o encontre. É aí que entra o RecordCount. Se for 0, é porque não encontrou, e é user inválido. Se encontrou algum, é porque encontrou lá pelo menos 1 (em teoria, apenas um, caso o campo username seja sempre único). Nesse caso, passa à verificação da pass. 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
smack_dead Posted March 5, 2014 at 05:39 PM Author Report #547653 Posted March 5, 2014 at 05:39 PM (edited) muito bom 😉 descupla la a minha ignorancia mas ainda nao sei onde foste buscar o result :S é que nem inicializado esta n sei ... Edited March 5, 2014 at 05:40 PM by smack_dead
Kline777 Posted March 5, 2014 at 05:49 PM Report #547654 Posted March 5, 2014 at 05:49 PM Todas as funções têm essa variavel 🙂 Representa o valor da propria função. Se tiveres Function Func1():integer; begin result:=1; end; Quando chamares a Func1 ela vai retornar 1. É só isto... nao precisas de pensar de onde vem 😛 é igual a teres: Function Func1():integer; begin Func1:=1; end; 2 Report
nunopicado Posted March 5, 2014 at 05:50 PM Report #547655 Posted March 5, 2014 at 05:50 PM muito bom 😉 descupla la a minha ignorancia mas ainda nao sei onde foste buscar o result :S é que nem inicializado esta n sei ... E volto a perguntar: Alguma vez criaste uma função em Delphi? Se sim, como é que retornas o resultado da função? 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
smack_dead Posted March 5, 2014 at 06:01 PM Author Report #547659 Posted March 5, 2014 at 06:01 PM (edited) OMG BRAIN FREEZZZZZZ ahhhhhh lol lol lol sorry 😄 ja entendi 😄 so uma pequena questao.... podes-me dar uma breve descrição, so para ver memo o que estou a fazer, do RecordCount..... Edited March 5, 2014 at 06:23 PM by smack_dead
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now