Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Använd ASP och en databas för enkel inloggning

Postad 2003-06-15 av Pelle Johansson i sektionen ASP.NET, C#, Okategoriserat med 1 Kommentarer | Läst av: 8298, Betyg: 87%

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
  » HTML-koden
  » ASP
  » ASP & HTML tillsammans
  » Nu skall vi täta samtliga sidor
  » Vad kan gå fel?
  » Var artikeln användbar?
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:



HTML-koden

Så här kan html-koden se ut innan vi infogar ASP. Spara filen som login.asp





Inloggningsdemo


















Din
inloggning misslyckades, försök igen!
Användarnamn:
Lösenord:











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.





<% If action = "login" And LoginFlag = False Then %>



<% End If %>





Nu skall vi täta samtliga sidor

Genom att nu på varje sida ha en kontroll om Session("login") är "true" för att inte användaren skall kunna ta sig in bakvägen via exempelvis en genväg till någon sida. Du kan antingen välja att ha detta som en include-fil eller att lägga koden överst på varje asp-sida. Om nu inte sessionsobjektet Login är true, kommer du att skickas till inloggningssidan igen.


<% Response.Buffer = True
If session("login") <> "true" Then
Response.Redirect "login.asp"
End If
%>



...


Obs! För IIS4 eller IIS5 kan man stänga av Response.Buffer, för att vara säker på att få utföra en response.redirect så skriv då först Response.Buffer = True.

Något mer än detta behövs egentligen inte men jag skulle dock vilja påpeka några brister här som kan ställa till det för dig och användaren. Användarnamnet och Lösenordet som du hämtar upp- bör göras om till lowercase - och även i select-satsen, för att om användaren inte anger samma som det står i databasen så kommer inloggningen att misslyckas. Du kanske också vill att man skall spara dessa värden som en cookie för att användaren skall slippa registrera detta varje gång. En mer avancerad inloggning och registreringsförfarande kommer presenteras i en senare kurs.



Vad kan gå fel?

Exempelfilerna (dvs den kod som finns ovan) måste vara placerad i en katalog som är avsedd för att kunna köra asp-filer, exempelvis c:\inetpub\wwwroot\demo då du testar programmet.


Var artikeln användbar?

Om du gör någon intressant applikation av detta material så skicka gärna det med ett mail eller bifoga en länk till mig så presenterar jag detta som ytterligare exempelfiler för kursen. Om detta innehållet är felaktigt eller du lärt dig fler finesser så skriv gärna en rad eller varför inte en egen kurs baserat på dina erfarenheter.

/Pelle Johansson
Upp

1 Kommentarer


  1. Håkan Fors
    8 mar 2006

    Undrar vart exempelfilerna finns att finna!

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 158
27 952
271 704
946
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies
Din
inloggning misslyckades, försök igen!