20. december 2007 - 22:03Der er
11 kommentarer og 1 løsning
Tjekke profilnavn og kodeord fra database.
Hej, nu har jeg stirret mig blind i mine koder i flere timer *g*
Jeg har en fil (start.asp) med følgende kode: ----------------------------------------------- <form method="POST" action="login.asp"> <input type="text" name="login" size="12"> <input type="text" name="password" size="12"> <input type="submit" value="Log ind" name="submit"> ---------------------------------------------------
Den fungerer fint. Så har jeg næste fil (login.asp) med følgende kode: ----------------------------------------------- <% ' Databaseforbindelse oprettes Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath ("database") Conn.Open DSN
If Request.Form("login") = "Select * from profil(p_navn)" AND Request.Form("password") = "Select * from profil(p_kodeord)" Then
Session("login") = "JA" Session.Timeout = 30 Response.Write "<h1>Du er nu logget korrekt ind</h1>" Response.Write "<p><a href='dokument.asp'>Link til beskyttet fil</a></p>"
Else
Session("login") = "NEJ" Session.Timeout = 30 Response.Write "<h1>Du er IKKE logget korrekt ind</h1>" Response.Write "<p><a href='dokument.asp'>Link til beskyttet fil</a></p>"
End If
Conn.Close Set Conn = Nothing %> ----------------------------------------------- Og så har jeg den sidste fil, dokument.asp som også er fin nok. mit problem ligger i, jeg vil gerne have den skal gå ind i databasen og hente oplysningerne, brugernavn og kodeord og så logge ind til dokument.asp
I min database har jeg følgende tabel: profil og følgende i profil: p_navn og p_kodeord.
Jeg er ikke sikker på jeg helt forstår hvad det er du vil. Hvis du blot vil sikre dig, at brugeren er logget ind for at hente dokument.asp, er det så ikke blot at lave et check i toppen af filen for at se om session("login") er tom?
if session("login") = "" then ikke logget ind - retur til loginside else logget ind - se dokumentet end if
Du laver i realiteten ikke noget opslag i databasen i den kode du har vist. Du skal du udføre den SQL-sætning der læser oplysninger og aflæse resultatet. Det kan du opnå således:
"Select * from profil(p_navn)" sql = "SELECT id " & _ "FROM profil " & _ "WHERE p_navn = '" & replace(Request.Form("login"),"'","''") & "' " & _ "AND p_kodeord = '" & replace(Request.Form("password"),"'","''") & "'" set rs = Conn.Execute(sql) ' Hvis der er en række i resultatet, så finde brugeren med det angivne kodeord ' Hvis der ikke er nogen rækker findes brugeren ikke eller kodeordet er forkert loggedIn = not rs.eof rs.close set rs = nothing
If loggedIn Then Session("login") = "JA" Session.Timeout = 30 Response.Write "<h1>Du er nu logget korrekt ind</h1>" Response.Write "<p><a href='dokument.asp'>Link til beskyttet fil</a></p>"
Else
Session("login") = "NEJ" Session.Timeout = 30 Response.Write "<h1>Du er IKKE logget korrekt ind</h1>" Response.Write "<p><a href='dokument.asp'>Link til beskyttet fil</a></p>"
...og derefter skal du, som Goose påpeger, sørge for at checke om brugeren er logget ind, på hver eneste side der kræver at brugeren er logget ind. Du kan f.eks. lægge dette check i en separat fil som du inkluderer i alle de sider som kræver login.
sql = "SELECT id " & _ "FROM profil " & _ "WHERE p_navn = '" & replace(Request.Form("login"),"'","''") & "' " & _ "AND p_kodeord = '" & replace(Request.Form("password"),"'","''") & "'" set rs = Conn.Execute(sql) ' Hvis der er en række i resultatet, så finde brugeren med det angivne kodeord ' Hvis der ikke er nogen rækker findes brugeren ikke eller kodeordet er forkert loggedIn = not rs.eof rs.close set rs = nothing
If loggedIn Then Session("login") = "JA" Session.Timeout = 30 Response.Write "<h1>Du er nu logget korrekt ind</h1>" Response.Write "<p><a href='dokument.asp'>Link til beskyttet fil</a></p>"
Else
Session("login") = "NEJ" Session.Timeout = 30 Response.Write "<h1>Du er IKKE logget korrekt ind</h1>" Response.Write "<p><a href='dokument.asp'>Link til beskyttet fil</a></p>"
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.