/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Login
Fra : Ryan


Dato : 11-04-03 20:46

I forbindelse med et login system bruger jeg følgende kode til at tjekke om
adgangskoden er korrekt.
Do
If rs("brugernavn") & rs("kode") = Request.Form("brugernavn") &
Request.Form("kode") Then
Session("login") = "JA," & Request.Form("brugernavn")
Session.Timeout = 20
End If
rs.MoveNext
Loop While Not rs.EOF

Er dette den bedste måde at gøre dette på? Jeg tænkte på, om man ikke kunne
søge i databasen efter brugernavnet, og så på en eller anden måde
sammenligne med kodeordet, eller vil dette være lige så krævende, som at
gennemløbe hele mit recordset for at finde det?
Ud over det så er jeg også i tvivl om, hvorvidt det er smart, at sætte min
session som jeg gør. Da jeg skal bruge brugernavnet senere, er jeg nødt til,
at sende det med på en eller anden måde, men querystrings er lidt for lette
at gennemskue.

--
Ryan





 
 
Jens Gyldenkærne Cla~ (12-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-04-03 10:21

Ryan skrev:

> I forbindelse med et login system bruger jeg følgende kode til
> at tjekke om adgangskoden er korrekt.

[gennemløb af recordset med løkke]

> Er dette den bedste måde at gøre dette på?

Nej.

> Jeg tænkte på, om man ikke kunne søge i databasen efter
> brugernavnet, og så på en eller anden måde sammenligne med
> kodeordet,

Eller endnu bedre: søg efter brugernavn og kodeord samtidig.

> eller vil dette være lige så krævende, som at gennemløbe hele
> mit recordset for at finde det?

Nej, det vil være mange gange hurtigere. Databaser er beregnet til
at finde oplysninger i - så i alle de tilfælde hvor det er muligt
bør du lægge kriterierne i databasen og ikke i en asp-løkke.

Du kan bruge følgende SQL som skabelon:

SELECT brugernavn, brugerID FROM brugere WHERE brugernavn = 'foo'
AND kode = 'bar'

Foo og bar skal erstattes med data fra formen (altså noget i
retning af:

Dim bruger, kode
bruger = Replace(Request.Form("brugernavn") & "", "'", "''")
kode = Replace(Request.Form("kode") & "", "'", "''")

strSQL = "SELECT brugernavn, brugerID FROM brugere WHERE brugernavn
= '" & bruger & "' AND kode = '" & kode & "'"

(strSQL skal stå på en linje)

Hvis (og kun hvis) der findes en bruger vil strSQL returnere et
ikke-tomt recordset. Derfor bliver asp-delen af dit logintjek som
følger:

set rs = Conn.Execute (strSQL)
If Not rs.EOF Then
   ' Bruger fundet
Else
   ' Bruger ikke fundet
End if

> Ud over det så er jeg også i tvivl om,
> hvorvidt det er smart, at sætte min session som jeg gør.

Du gemmer to forskellige ting ("Ja" + brugernavnet) i en
sessionvariabel. Det er upraktisk. Du kan bruge flere
sessionvariable hvis der er flere oplysninger du vil have
registreret. Fx som følger:

If Not rs.EOF Then
   ' Bruger fundet
   session("validuser") = True
   session("brugernavn") = rs("brugernavn")
Else
   session("validuser") = False
   session("brugernavn") = Nothing
End If
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408528
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste