Använd ASP och en databas för enkel inloggning
Förord
Med din hemsida kan det vara intressant att använda sig av en inloggning så att man kan bestämma vad som skall visas eller för vem. Jag har använt mig av en accessdatabas innehållande användarnamn och lösenord som jag använder för att verifiera användarens inloggning. Vilken databas du använder spelar ingen roll - bara du kan placera den och komma åt den från din ASP-sida.Innehåll
»»
»
»
»
»
Databas
Börja med att skapa en tabell med namnet tblUsers innehållande två fält: username och password. Dessa fält skall vara text och längden är 30 tkn. Något index behövs inte sålänge det inte rör sig om flera hundra poster.
Gör en inloggningssida
Använd ditt program för att göra en sida innehållande användarnamn och lösenord. Lägg till en knapp som heter "Logga In". Programmet sparar du som login.asp och formen skall även kalla på login.asp?action=login. (se demofilen). Så här kan sidan se ut i FrontPage:
Så här kan html-koden se ut innan vi infogar ASP. Spara filen som login.asp
När layouten är klar så börjar vi att infoga lite asp-kod på sidan för att sköta om inloggnings och presentationsförfarandet. Vi börjar med att ansluta till vår databas som är en Accessdatabas och kallas sample.mdb.
När anslutningen är klar, skall vi kontrollera vad som egentligen skall göras. Vi vet att användaren trycker på Logga In knappen - den laddar om sidan och har då även med sig parametern ?action=login. Vi kontrollerar då om det är så..
Ovan hämtar vi ut användarnamnet och lösenordet från det som skrivits i formuläret. Därefter konstruerar vi Sql-satsen som skall ställas till tabellen. Vi kör frågan och får ett recordset tillbaka. Innehåller det någon post så har vi fått en träff - annars inte. Avslutningsvis så frigör vi recordset och connection till databasen.
Nu skall vi använda parametern Action och LoginFlag för att presentera html-sidan beroende på resultatet av inloggningen.
Som du ser ovan - är inloggningen korrekt så omdirigeras du till en annan sida, i annat fall kommer samma sida att finnas presenteras och du ser då även texten 'felaktig inloggning'. Det är här response.buffer=true kommer till sin rätt. Använder du inte denna parameter överst på din sida kommer du få ett felmeddelande - att html huvudet redan skrivits till din browser.
Genom att använda dessa variabler - presenterar vi ett meddelande och tillåter användaren att försöka med en ny inloggning.
Börja med att skapa en tabell med namnet tblUsers innehållande två fält: username och password. Dessa fält skall vara text och längden är 30 tkn. Något index behövs inte sålänge det inte rör sig om flera hundra poster.
Gör en inloggningssida
Använd ditt program för att göra en sida innehållande användarnamn och lösenord. Lägg till en knapp som heter "Logga In". Programmet sparar du som login.asp och formen skall även kalla på login.asp?action=login. (se demofilen). Så här kan sidan se ut i FrontPage:
HTML-koden
Så här kan html-koden se ut innan vi infogar ASP. Spara filen som login.asp
Inloggningsdemo
ASP
När layouten är klar så börjar vi att infoga lite asp-kod på sidan för att sköta om inloggnings och presentationsförfarandet. Vi börjar med att ansluta till vår databas som är en Accessdatabas och kallas sample.mdb.
<%
' förbereder för en omdirigering om inte redirekt default
' är satt till ON. Oftast på IIS4, IIS5 är default ON.
response.buffer = true
' ansluter till min datakälla
set con = server.createObject("ADODB.Connection")
conStr = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("sample.mdb")
con.open conStr
%>
När anslutningen är klar, skall vi kontrollera vad som egentligen skall göras. Vi vet att användaren trycker på Logga In knappen - den laddar om sidan och har då även med sig parametern ?action=login. Vi kontrollerar då om det är så..
<%
' vill användaren logga in?
action = Lcase(Request("action"))
Select Case Action
Case "login"
' hämtar inmatade värden. Garderar mig även för
' SQL Injection.
strUser = Replace( Request("username"),"'","''")
strPass = Replace(Request("password"),"'","''")
sql = "select * from tblUsers where " & _
"username = '" & strUser & "' and " & _
"password = '" & strPass & "' "
' kör frågan mot tabellen
set rst=con.execute(sql)
' fick vi någon träff?
If Not (Rst.Eof or Rst.BOF) Then
' träff
LoginFlag = True
Else
' inga träffar
LoginFlag = False
End If
End Select
Set rst = Nothing
Set con = Nothing
%>
Ovan hämtar vi ut användarnamnet och lösenordet från det som skrivits i formuläret. Därefter konstruerar vi Sql-satsen som skall ställas till tabellen. Vi kör frågan och får ett recordset tillbaka. Innehåller det någon post så har vi fått en träff - annars inte. Avslutningsvis så frigör vi recordset och connection till databasen.
Nu skall vi använda parametern Action och LoginFlag för att presentera html-sidan beroende på resultatet av inloggningen.
<%
If action = "login" And LoginFlag = True Then
' korrekt inloggning, gå till startsidan
Session("login") = "true"
Response.Redirect "mainpage.asp"
Else
Session("login") = "false"
' felaktig - då visar vi detta för användaren
End If
%>
Som du ser ovan - är inloggningen korrekt så omdirigeras du till en annan sida, i annat fall kommer samma sida att finnas presenteras och du ser då även texten 'felaktig inloggning'. Det är här response.buffer=true kommer till sin rätt. Använder du inte denna parameter överst på din sida kommer du få ett felmeddelande - att html huvudet redan skrivits till din browser.
ASP & HTML tillsammans
Genom att använda dessa variabler - presenterar vi ett meddelande och tillåter användaren att försöka med en ny inloggning.