Avatar billede monstermand Nybegynder
15. juni 2002 - 14:01 Der er 18 kommentarer og
1 løsning

Login

Hej,

jeg har lavet en side i ASP, som jeg vil have man skal have adgangskode for at kunne logge sig ind på! Hvordan gør man det? Jeg vil gerne have det skåret ud i pap :o)

Tak
Avatar billede pato Nybegynder
15. juni 2002 - 14:23 #1
skal det være med forskellige login's eller en generel..og er der en database bag?
Avatar billede eagleeye Praktikant
15. juni 2002 - 14:24 #2
Du kan lave en login FORM i stil med:
<table border="1">
<form method="post" action="login_chk.asp" name="adminlogin">
  <tr><td>Brugernavn:</td><td><input name="username"></td></tr>
  <tr><td>Password:</td><td><input type="password" name="password"></td></tr>
  <tr><td colspan="2" align="center"><input type="submit" value="Login" name="Action"></td></tr>
</form>
</table>


Så lave du en fil som tjekker det indtastede brugeranvn og password:


username = replace(Request.Form("username"),"'","")
password = replace(Request.Form("password"),"'","")

strSQL= "SELECT * FROM members WHERE (username = '" & username & "' AND userpassword='" & password & "');"
Set rs = Conn.Execute (strSQL)

if not rs.EOF then
  session("loginOK") = "jada"
  session("loginMemberID") = rs("memberID")  'Gemmer også memberID...
  Conn.Close
  Response.Redirect("../forum.asp")  'Send til førete side
else
  'Fejl i brugernavn eller password
  Response.Redirect("login.asp")
end if



På de sider du vil beskytte:

if Session("loginOK") <> "jada" then
  'Ikker loget ind send til login.asp siden
  Response.Redirect("login.asp")
else
  'Her skal sidne være:
end if
Avatar billede monstermand Nybegynder
15. juni 2002 - 14:38 #3
hvad er det forkert ved denne her:

<html>
<title>tid og dato</title>
<head>
</head>
<body>
<%
' Tjek om login og password er korrekte
If Request.Form("login") = "bruger" AND Request.Form("password") = "bruger" Then

' Hvis korrekt sættes session til JA
  Session("login") = "BRUGERJA"
  Session.Timeout = 30
  Response.Redirect "bruger.asp"

Else

' Hvis forkert sættes ingen session til NEJ
  Session("login") = "NEJ"
  Session.Timeout = 30
  Response.Redirect "index.asp"


If Request.Form("login") = "admin" AND Request.Form("password") = "admin" Then

' Hvis korrekt sættes session til JA
  Session("login") = "ADMINJA"
  Session.Timeout = 30
  Response.Redirect "administrator.asp"

Else

' Hvis forkert sættes ingen session til NEJ
  Session("login") = "NEJ"
  Session.Timeout = 30
  Response.Redirect "index.asp"

End If
%>
</body>
</html>

Grunden til at jeg både har en admin og en bruger er som det kan at når man logger ind som administrator skal man komme ind på en anden side end når brugeren logger ind
Avatar billede eagleeye Praktikant
15. juni 2002 - 14:41 #4
prøv at sætte:

Response.buffer=true

ind i toppen af din fil.
Avatar billede monstermand Nybegynder
15. juni 2002 - 14:42 #5
egentlig ville jeg hellere bruge den du har lavet der bruger databasen, men hvordan laver jeg to adgangsniveauer? Når man logger ind som admin skal man komme ind på administration.asp, og når man logger ind som bruger skal man komme ind på bruger.asp?
Avatar billede eagleeye Praktikant
15. juni 2002 - 14:49 #6
hvis du opgå lave en kolonne som hedder  userType  som tal så kan du have 0=bruger 1=admin


if not rs.EOF then
  session("loginOK") = "jada"
  session("loginMemberID") = rs("memberID")  'Gemmer også memberID...
  session("loginUserType") = rs("userType")  'hent og gem userType
  Conn.Close

  if CInt(session("loginUserType")) = 0 then 'bruger
    Response.Redirect("bruger.asp")  'Send til førete side
  elseif CInt(session("loginUserType")) = 1 then 'Admin
    Response.Redirect("adminpage.asp")  'Send til førete side
  else 'hvis userType er forskelligfra 0 og 1
    Response.Redirect("bruger.asp")  'Send til førete side
  end if
else
  'Fejl i brugernavn eller password
  Response.Redirect("login.asp")
end if
Avatar billede monstermand Nybegynder
15. juni 2002 - 15:02 #7
hvad bruges memberID til? Er det også en kolonne jeg skal have i min tabel?
Avatar billede eagleeye Praktikant
15. juni 2002 - 15:05 #8
ja.. Det et en autonummer kolonne i members tabellen.

Så kan du altid finde brugeres oplysninger med:
"SELECT * FROM members WHERE memberID = " & session("loginMemberID")
Avatar billede monstermand Nybegynder
15. juni 2002 - 15:10 #9
ok - men når man endelig er logget på og har fået sin "session", så vil en bruger kunne, hvis han kan adresse administration.asp, kunne gå ind på den side uden at være logget ind som administartor?

Skal man så ikke have to forskellige slags af de her:

if Session("loginOK") <> "jada" then
  'Ikker loget ind send til login.asp siden
  Response.Redirect("login.asp")
else
  'Her skal sidne være:
end if

en der fiver adgang til bruger.asp, og en der både giver adgang til bruger.asp og administrator.asp
Avatar billede monstermand Nybegynder
15. juni 2002 - 15:11 #10
så skal man vil have fat i

session("loginUserType")

på hver del side?
Avatar billede eagleeye Praktikant
15. juni 2002 - 15:14 #11
Så kan du lave if om til så den også tjekke på userType:


if (Session("loginOK") = "jada") AND CInt(session("loginUserType")) = 1 then

  'Her skal sidne være:

else
  'Ikker loget ind send til login.asp siden
  Response.Redirect("login.asp")
end if
Avatar billede eagleeye Praktikant
15. juni 2002 - 15:15 #12
Der er vel kom på Admin siden du behøver det ekstra tjek. En admin må vel godt gå ind på bruger siden.
Avatar billede monstermand Nybegynder
15. juni 2002 - 15:17 #13
ja..

det kan du have ret i
Avatar billede monstermand Nybegynder
15. juni 2002 - 15:20 #14
lige et dumt spørgsmål:
Når du skriver: 'her skal siden være , hvordan skal jeg så sætte mine <% %> i forhold til mine <html> </html>?
Avatar billede monstermand Nybegynder
15. juni 2002 - 15:20 #15
må der godt være html inde i <%    html, html, html    %>?
Avatar billede monstermand Nybegynder
15. juni 2002 - 15:33 #16
<%
Response.buffer=true
%>

<html>
<title>login</title>
<head>
</head>
<body>
<%


username = replace(Request.Form("username"),"'","")
password = replace(Request.Form("password"),"'","")

strSQL= "SELECT * FROM tblBrugere WHERE (Brugernavn = '" & username & "' AND Password='" & password & "');"
Set rs = Conn.Execute (strSQL)


if not rs.EOF then
 
  session("loginOK") = "JA"
  session("loginMemberID") = rs("ID")  'Gemmer også memberID...
  session("loginUserType") = rs("Type")  'hent og gem userType
 
  Conn.Close

  if CInt(session("loginUserType")) = 0 then 'bruger
    Response.Redirect("bruger.asp")  'Send til bruger.asp side
 
  else if CInt(session("loginUserType")) = 1 then 'Admin
    Response.Redirect("administrator.asp")  'Send til administrator.asp side
 
  else 'hvis userType er forskelligfra 0 og 1
    Response.Redirect("index.asp")  'Send til førete side
  end if

else
  'Fejl i brugernavn eller password
  Response.Redirect("index.asp")

end if

%>






</body>
</html>

hvad er det forkert ved ovenstående?
Avatar billede eagleeye Praktikant
15. juni 2002 - 15:51 #17
du mangeler en connection conn til databasen.
Avatar billede eagleeye Praktikant
15. juni 2002 - 15:52 #18
Du skal hvade en connection til den database som indeholder tabellen med bruger oplysninger:

Eks kunne være:
Conn.Open "Data Source="& server.mappath("db5.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"
Avatar billede monstermand Nybegynder
15. juni 2002 - 16:05 #19
du er for sej - har fået det hele til at virke nu :o)

kommer nok snart igen med mere eller mindre udfordrende spørgsmål :o)
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