Avatar billede totalpc Seniormester
07. december 2012 - 12:49 Der er 8 kommentarer og
1 løsning

Logik omkring login

Jeg har et check på login. Det er lidt forsimplet som nedenstående.
Men jeg synes logikken er lidt forkert. Uanset om jeg skriver kodeord eller brugernavn eller begge forkert vil jeg jo ende i den samme rs.eof og aldrig få brug for den sidste udgave hvor den kun ser at kodeordet er forkert. Har jeg ret?
Hvordan bør man lave login tjekket for at det giver mest mening?


strSQL = "SELECT * FROM medlem WHERE Medlemsnr = '" & strMedlemsnr & "' AND kodeord = '" & strPassword & "'"
Set rs = Conn.Execute(strSQL)

if rs.eof then
  'Bruger findes ikke
  Response.Redirect "default.asp?msg=" & Server.URLEncode ("Medlemsnr eller kodeord forkert!")
else
  if rs("medlemsnr") = strmedlemsnr and rs("kodeord") = strPassword then
    'Kode passer også case sensitive
    response.redirect "adgangssiden.asp"
  else
    'Kode passer ikke case sensitive
    Response.Redirect "default.asp?msg=" & Server.URLEncode ("Kodeord forkert!")& "&medlemsnr=" & Server.URLEncode(strmedlemsnr)
  end if
Avatar billede mortvader Nybegynder
07. december 2012 - 13:15 #1
Du har ret. Sidste else giver ingen mening!
Avatar billede totalpc Seniormester
07. december 2012 - 13:36 #2
Men kan det laves smartere ?
Avatar billede mortvader Nybegynder
07. december 2012 - 13:58 #3
Mjah, hvad synes du vil gøre det smartere?
Jeg tænker bare virker det, eller virker det ikke :)
Avatar billede totalpc Seniormester
07. december 2012 - 14:02 #4
Tja...
Sådan noget med at den kan fortælle om det er kodeord eller brugernavn der er forkert.
Avatar billede olebole Juniormester
07. december 2012 - 14:32 #5
<ole>

Hvis jeg vil ind uden at have lov, mon så det er 'smart' at fortælle mig, hvor min fejl ligger?  =)

/mvh
</bole>
Avatar billede mortvader Nybegynder
07. december 2012 - 14:40 #6
Enig med ole/bole.

Men hvis du vil give den information, så gør sådan:

strSQL = "SELECT * FROM medlem WHERE Medlemsnr = '" & strMedlemsnr & "' AND kodeord = '" & strPassword & "'"
Set rs = Conn.Execute(strSQL)

if rs.eof then
  Response.write "Brugernavn er forkert"
else
  if rs("kodeord") = strPassword then
    response.write "velkommen"
  else
    response.write "Password er forkert"
  end if
end if
Avatar billede totalpc Seniormester
07. december 2012 - 14:44 #7
Ja det har I selvfølgelig ret i.
Jeg tror jeg lader det være som det er. Blot uden den sidste else. Smidt et svar begge 2.
Takker
Avatar billede mortvader Nybegynder
07. december 2012 - 14:46 #8
God weekend!
Avatar billede olebole Juniormester
07. december 2012 - 23:29 #9
Ellers tak, jeg samler ikke point, så de må gå til mortvaders  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester