7
Tags:
asp
Skrevet af
Bruger #473
@ 18.08.2002
Login eksempel
Introduktion:
Her skal vi se på hvordan vi kan beskytte sider, som du ikke ønsker andre skal kunne se.
Der er nok flere måder at gøre det her på, og koden kan udbygges på flere punkter.
Til dette eksempel bruger vi en database (MS Access).
Vi bruger ” C:\\Inetpub\\wwwroot” til web-stedets placering.
Dette lille eksempel skal ikke ses som et færdigt stykke kode.
Men det viser det grundlæggende til at sikrere sine sider med.
Databasen:
Vi starter med at oprette en database, som skal indeholde brugernavn og password.
Start Access, klik på ”Tom Access-database” og ”Ok”. Gem databasen som ”Users” (Filnavn)
i ” C:\\Inetpub\\wwwroot”.
Double klik på ”Opret en tabel i designvisning”. I første ”Feltnavn” skriver du ”Id” (uden ””)
og i ”Datatype” vælger du ”Autonummerering”. Højre klik på den sorte pil i venstre side, og vælg
”Primær nøgle”.
Jeg vil ikke bruge Id’et i denne artikel, men det kunne være at der kom en endnu.
I ”Feltnavn” under ”Id”, skriver du ”Username” (uden ””) og i ”Datatype” vælger du ”Tekst”.
I ”Feltnavn” under ”Username”, skriver du ”Password” (uden ””) og i ”Datatype” vælger du ”Tekst”.
Tryk nu på ”Gem” og skriv ”Users” (uden ””) under ”Tabelnavn”. Tryk på ”Ok”.
Dit skærmbillede skulle gerne line det her:
Tryk nu på ”Visning” oppe til venstre for ”Gem” knappen. Under ”Username” skriver du ”admin” (uden ””).
Og under ”Password” skriver du ”demo”. Tryk nu på ”Gem”.
Vi har nu oprettet en database, og en bruger.
Html/Asp koden:
Vi starter med filen
default.asp
<html>
<head>
<title>Ny side 1</title>
</head>
<body>
<%
If Session("Login") <> True Then
Response.Redirect "login.asp"
Else
Response.Write "Du er nu logget ind!"
Response.Write "<p><a href='logud.asp'>Logud</a></p>"
End If
%>
</body>
</html>
Der er ikke så meget her. Hvis brugeren er logget ind, så skriv det.
Ellers omdiriger til "Login.asp".
Login.asp
1 <html>
2 <head>
3 <title>Ny side 1</title>
4 </head>
5 <body>
6
7 <%
8 Mode = Request("Mode")
9
10 If Mode = "" Then
11 %>
12
13 <form method="POST" action="login.asp?Mode=Login">
14 <input type="text" name="Username" size="20">: Brugernavn<br>
15 <input type="password" name="Password" size="20">: Password<br>
16 <input type="submit" value="Login" name="B1">
17 </form>
18
18 <%
20 End If
21
22 If Mode = "Login" Then
23
24 Dim Username, Password
25
26 Username = Request.Form("Username")
27 Password = Request.Form("Password")
28
29 If Len(Username) > 0 Then
30 Username = Replace(Username, "'", "''")
31 End if
32 If Len(Password) > 0 Then
33 Password = Replace(Password , "'", "''")
34 End if
35
36 Conn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("Users.mdb") & ""
37 Set myConn = Server.CreateObject("ADODB.Connection")
38
39 myConn.Open Conn
40
41 Set RS = myConn.Execute ("SELECT * FROM Users WHERE Username='" & Username & "' AND Password='" & Password & "'")
42
43 If RS.EOF Then
44 Response.Write "Forkert brugernavn eller password!"
45 Response.Write "<p><a href='login.asp'>Login</a></p>"
46 Response.Write "<p><a href='default.asp'>Forside</a></p>"
47 Else
48 Session("Login") = True
49 Response.Redirect "sikkerside.asp"
50 End If
51
52 RS.Close
53 Set RS = Nothing
54 myConn.Close
55 Set myConn = Nothing
56
57 End If
58 %>
59
60 </body>
61 </html>
Linie 8 : Er "Mode" sat?
Linie 10: Hvis "Mode" ikke er sat, så hvis login form.
Linie 22: Hvis "Mode" er "Login" (bruger har trykket på login).
Linie 26-27: Find "Username" og "Password".
Linie 29-34: Sikkerhed se:
http://activedeveloper.dk/aspdigital/2002053001.asp.
Linie 36-39: Åben databasen.
Linie 41: Søg efter brugeren i databasen.
Linie 43-50: Hvis brugeren findes, så set "Session("Login") til "True" og gå til "sikkerside.asp".
Ellers gå til login.asp igen.
Linie 52-55: Luk databasen.
Logud.asp
<html>
<head>
<title>Ny side 1</title>
</head>
<body>
<%
Session("Login") = False
Response.Redirect "default.asp"
%>
</body>
</html>
</pre>
Set "Session("Login")" til "False" og vidresend til "default.asp", som vidresender til "login.asp" da vi ikke er logget ind.<br>
<br>
<b>Sikkerside.asp</b><br>
<pre>
<html>
<head>
<title>Forside</title>
</head>
<body>
<%
If Session("Login") = True Then
%>
Dette er en beskyttet side!
<p><a href="default.asp">Forside</a></p>
<p><a href="logud.asp">Logud</a></p>
<%
Else
%>
Du er ikke logget ind!
<p><a href="login.asp">Login</a></p>
<%
End If%>
</body>
</html>
Hvis bruger er logget ind, så vis det "hemmelige".
Ellers afvis, og giv et link til
login.asp
De sidste ”Kloge” ord:
Ja der er vel ikke så meget at sige, udover at jeg håber at i kan bruge artiklen til noget.
Er der nogle der skulle have nogle spørgsmål, så er i velkommen til at kontakte
mig.
Koden og database kan hentes
her
Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.
Del også gerne artiklen med dine Facebook venner:
Kommentarer (8)
Lige det jeg skulle vide... Simpelt, og til at forstå!
Hvordan kan det værre du har flere body`er og du har HTML kode stående ude fra en <HTML></html> tag?
Det er en fejl i artikkel systemet, har prøvet at få KasperTSW til at rette det, uden held.
Det der står i mellem </pre> og <pre> er min kommentar, ikke kode.
Dit link til koden og databsen virker forresten ikke...
Det skal lige nævnes at man skal have sat Response.Buffer = True for, at få ovenstående ASP script til at virke...
Det skyldtes at Response.Redirect sender en HTTP header til brugerens browser, hvori den informerer browseren om den nye side som skal vises i stedet... Dette fungerer ikke hvis man allerede har sendt 1 eneste tegn til browseren, idet man så ikke kan sende en header... Derfor skal man enten aktivere "buffering" eller sikre sig, at Response.Redirect kommer før et eneste tegn af selve html dokumentet.
Undskyld. JEg var lige hurtig nok. Jeg havde overset linje 29 - 34. *S*
Du skal være
logget ind for at skrive en kommentar.