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