John René Lauritzen skrev:
> Jeg ønsker at lave en database med to kolonner, en med usernames
> og en med passwords. Jeg har lavet nedenstående script, men af en
> eller anden grund er det kun user/pass-kombinationen der står
> øverst i tabellen som den godtager. Skriver jeg en kombinationen
> fra række 2 eller 3, så går den alligevel til wrongpass.asp...
> HVORFOR!!!
Pepps har vist en løsning der fungerer. Jeg vil bare lige forklare
hvorfor din nuværende løsning ikke virker med andet end det første par
af brugernavn/adgangskode.
> strSQL = "Select * from users"
> Set rs = Conn.Execute(strSQL)
Her henter du alle oplysninger fra user-tabellen. Postsættet rs vil
automatisk pege på den første post - og derfor er det den første posts
værdier du får ud når du skriver rs("name") og rs("password").
Generelt er det en dårlig ide at bruge en asp-løkke til at lede efter
oplysninger i en database. Det er _langt_ mere effektivt at bede
databasen om at finde dem. Brug WHERE til at sætte kriterier op til
databasen (se pepps' eksempel)
Når din kode ikke virker, er det imidlertid ikke på grund af asp-løkken,
men på grund af den handling du udfører i else-delen.
I din løkke har du:
> If Request.Form("user") = rs("name") AND Request.Form("password")
> = rs("password") Then
> Response.Redirect ("rightpass.asp")
- altså hvis brugernavn/adgangskode passer, sendes der videre til
rightpass.asp. Den er god nok - omend du "taber" dit postsæt i luften
når du ikke lukker det (husk generelt at bruge rs.close og set rs =
nothing)
> Else
> Response.Redirect ("wrongpass.asp")
Men i din else-del går det galt. Her står der at hvis
brugernavn/adgangskode-kombinationen ikke passer, skal brugeren sendes
til wrongpass.asp. Det tjek kan kun udføres på én post. Hvis du helt
dropper else-delen, så vil koden - langsomt men sikkert - trævle alle
posterne igennem og viderestille til rightpass hvis den finder en
kombination der passer. Så kan du placere response.redirect
("wrongpass.asp") uden for løkken - den skal jo kun køres hvis alle
kombinationer er afprøvet uden at finde et match.
Se evt. asp-tutorialen på html.dk om SELECT:
<
http://html.dk/tutorials/asp/lektion19.asp>
--
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