Avatar billede christ Nybegynder
20. november 2005 - 11:56 Der er 6 kommentarer og
1 løsning

Db gennemløb login

Hej

Jeg har en database med brugere. Når folk skal logge ind skal databasen naturligvis gennemløbes for at finde ud af om brugeren eksisterer. Hvir det er den første bruger i tabellen der vil logge ind går det fint, men så snart det er brugere længere nede går det ikke.

Kode:

set rs = server.CreateObject("adodb.recordset")
   
sql = "SELECT * FROM bruger"
rs.open sql, conn
   
do until rs.eof
   
if request.form("bruger")= rs.fields("brugernavn")and request.form("psw")= rs.fields("psw")then
response.redirect("default2.asp")
else
response.redirect("default.asp?besked=Forkert brugernavn/password")
end if

rs.movenext
loop
rs.close
set rs=nothing

Hvad går galt?

På forhånd tak
Christ
Avatar billede Slettet bruger
20. november 2005 - 12:02 #1
Har du overvejet :

dim strUsername
dim strPassword

strUsername = request.form("bruger")
strPassword = request.form("psw")

sql = "SELECT * FROM bruger brugername = '" & strUsername & ' and psw = '" & strPassword & "'"

set rs = server.CreateObject("adodb.recordset")
   
rs.open sql, conn

if not rs.eof then
  ' Brugernavn og password fundet
else
  ' Ikke adgang
end if
Avatar billede Slettet bruger
20. november 2005 - 12:02 #2
ups

sql = "SELECT * FROM bruger WHERE brugername = '" & strUsername & ' and psw = '" & strPassword & "'"
Avatar billede christ Nybegynder
20. november 2005 - 12:16 #3
Det ser sgu ud til at virke! Dvs. jeg skal bare bruge 'if not rs.eof then' i stedet for 'do until rs.eof'...

Tak for hjælpen.

Og her har jeg brugt hele natten på det...

Christ

Svar?
Avatar billede Slettet bruger
20. november 2005 - 12:17 #4
svar ;)
Avatar billede thesurfer Nybegynder
20. november 2005 - 12:19 #5
kryptos> 2 ting der er galt med dit svar:

1) Sikkerhed.
Som det er nu, kan man nemt hacke login'et, i det man bare kan indtaste "' or '' = '" som brugernavn eller password (kommer an på hvilket man kender).

Rettelsen ser sådan ud:

strUsername = replace(request.form("bruger"), "'", "''")
strPassword = replace(request.form("psw"), "'", "''")

Det erstatter 1x '-tegn med 2x '-tegn, som opfattes som et enkelt '-tegn.

2)

Du mangler et "-tegn efter "strUsername &":

sql = "SELECT * FROM bruger WHERE brugernavn = '" & strUsername & "' and psw = '" & strPassword & "'"

/theSurfer
Avatar billede christ Nybegynder
20. november 2005 - 14:16 #6
Det var jo ikke helt løgn
Avatar billede thesurfer Nybegynder
20. november 2005 - 16:55 #7
christ> Hvad var ikke helt løgn?

/theSurfer
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