/ 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
User/Pass i databasen
Fra : John René Lauritzen


Dato : 05-10-04 07:57

Lige for at få det på plads! Jeg er MEGET nybegynder!

Nå, men problemet er som følgende:

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!!!

PS. Er klar over at det nok ikke er den sikreste måde at lave
login-system på, men det er nu lige det jeg kan finde ud af!



<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/cgi-bin/database.mdb")
Conn.Open DSN
strSQL = "Select * from users"
Set rs = Conn.Execute(strSQL)
Do

If Request.Form("user") = rs("name") AND Request.Form("password")
= rs("password") Then
Response.Redirect ("rightpass.asp")

Else
Response.Redirect ("wrongpass.asp")

End If

rs.MoveNext
Loop While Not rs.EOF
Conn.Close
Set Conn = Nothing
%>

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
pepss (05-10-2004)
Kommentar
Fra : pepss


Dato : 05-10-04 09:28


"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!!!

nu har jeg ikke lige sat mig helt ind i din kode men jeg ville nu lave det
på en anden måde

> PS. Er klar over at det nok ikke er den sikreste måde at lave
> login-system på, men det er nu lige det jeg kan finde ud af!

det er nu ikke så usikker

nå men jeg ville lave det sådan:

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/cgi-bin/database.mdb")
Conn.Open DSN

'//det er en god ide kun at hente de felter du skal bruge (1)
'//det er også en meget god idé at validere input til en database(2)
strSQL = "Select name, password from users Where name = '" &
Request.Form("user") & "' AND password = '" & Request.Form("password") & "'"
Set rs = Conn.Execute(strSQL)

If rs.EOF OR rs.BOF Then
Response.Redirect ("wrongpass.asp")
else
Response.Redirect ("rightpass.asp")
End If

Conn.Close
Set Conn = Nothing

(1) http://asp-faq.dk/article/?id=63
(2) http://asp-faq.dk/article/?id=95

det kan også være en god ide at hashe password som gemmes i en database det
kan du læse om her:
http://asp-faq.dk/article/?id=52

håber du kan bruge det til noget


--
Pepss
Den ordblinde der prøver at blive webdesigner
Fræk frækkere www.cafe-flirt.dk
De frække noveller www.novelle.cafe-flirt.dk



Jens Gyldenkærne Cla~ (05-10-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 05-10-04 14:05

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

John René Lauritzen (06-10-2004)
Kommentar
Fra : John René Lauritzen


Dato : 06-10-04 06:50

Hej!

KANON! Tusind tak for hjælpen. Både den rigtige kode, men også den
udførlige gennemgang af HVORFOR. Det er bare lækkert.

Man skal jo lære et sted...

John

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

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

Månedens bedste
Årets bedste
Sidste års bedste