Avatar billede gyldenbrand Nybegynder
20. december 2007 - 22:03 Der 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.

Nogen der har løsningen? :)
Avatar billede gyldenbrand Nybegynder
20. december 2007 - 22:07 #1
btw. der ligger også en 'id' under profil i databasen, den er autonomering. Hvis det skulle hjælpe?
Avatar billede goose Nybegynder
20. december 2007 - 22:13 #2
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

/Goose
Avatar billede softspot Forsker
20. december 2007 - 22:17 #3
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:

<%
' Databaseforbindelse oprettes
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("database")
Conn.Open DSN

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

End If

Conn.Close
Set Conn = Nothing
%>
Avatar billede gyldenbrand Nybegynder
20. december 2007 - 22:17 #4
Nej, det er ikke for at tjekke om brugeren er logget ind..

jeg vil ha, i login.asp, den tjekker om brugernavn og password findes, hvis de gør, så skal den logge brugeren ind.

problemet ligger i sætningen:

If Request.Form("login") = "Select * from profil(p_navn)" AND Request.Form("password") = "Select * from profil(p_kodeord)"

Eller det tror jeg da ihvertfald..
Avatar billede gyldenbrand Nybegynder
20. december 2007 - 22:17 #5
soft... aarh ja det er sådan noget jeg leder efter.. jeg efterprøver lige engang :)
Avatar billede softspot Forsker
20. december 2007 - 22:19 #6
...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.
Avatar billede softspot Forsker
20. december 2007 - 22:21 #7
Ups! Jeg kom vist til at efterlade noget kode som ikke skulle have været der. Det skal naturligvis se således ud:

<%
' Databaseforbindelse oprettes
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("database")
Conn.Open DSN

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

End If

Conn.Close
Set Conn = Nothing
%>
Avatar billede gyldenbrand Nybegynder
20. december 2007 - 22:24 #8
Den siger, siden ikke findes?
Avatar billede gyldenbrand Nybegynder
20. december 2007 - 22:27 #9
Tusinde tak!, nu virker det sku :-)
Jeps er klar over det med session, der tjekker om brugeren er logget ind på bestemte sider :)

Bare lav et svar :)
Avatar billede softspot Forsker
20. december 2007 - 22:28 #10
Aaarh, den er du vist nød til at uddybe lidt mere! :)
Avatar billede softspot Forsker
20. december 2007 - 22:29 #11
OK, jamen, så smider jeg da lige et svar :)
Avatar billede softspot Forsker
20. december 2007 - 23:10 #12
Tak for point :)
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