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

Att skapa en community 1/3

Postad 2003-02-06 av i sektionen ASP.NET, C#, Okategoriserat med 3 Kommentarer | Läst av: 1436, Betyg: 68%

Förord

Innehåll
  » Inloggningen
  » Nu går vi över på ASP-koden
  » Registreringen
  » Nu skall vi gå över till ASP-koden.
  » Avslutningsvis

Att skapa ett community



Användarinformation
Vi börjar med att skapa databasen där vi skall lagra användarna i vårat community.
Vad man nu måste tänka på är exakt vad man vill ha med för infomation om användaren. jag har bestämt mig för:
Användarnamn (userLoginName)
E-post (userEmail)
Användarens lösenord (userPassword)
Inloggad? Ja/Nej (userLoginStatus)
När registrerade användaren sig? (userRegistred)
När loggade användaren in senast? (userLoginLatest)
Användarens riktiga namn (userFullName)
En text som beskriver användaren (userpresentation)
En länk till användarens hemsida (userURL)
En adress där man kan hämta en bild på användaren (userPictureURL)
Jag tyckte att ett poäng-system för detta community kunde vara roligt, så det behövs det också (userpoints)

Jag har även med en kolumn i databasen där jag lagrar ett unikt ID för användaren (userID).
Detta för att senare kunna hålla reda på vilken användare som gör vad och en massa saker som förklaras senare.


Databasen

tblUsers
Kolumnnamn Datatyp Förklaring
userID Automatisk räknare Unikt ID för användaren
userLoginName Text (Varchar) Användarnamn
userPassword Text (Varchar) Lösenord
userEmail Text (Varchar) Användarens e-post
userLoginStatus Number (Tal, Int) Är använderen inloggad?
userRegistred Date/Time (Datum/Tid) När registrerades användaren?
userLoginLatest Date/Time (Datum/Tid) När loggade användaren in senast?
userFullName Text (Varchar) Användarens riktiga namn
userPresentation Memo (PM, Text) En text som beskriver användaren
userURL Text (Varchar) Användarens hemsida
userPictureURL Text (Varchar) Adress till en bild på användaren
userPoints Number (Tal, Int) Hur många poäng har användaren?

Datatyperna inom parantes är motsvarande datatyper i diverse olika databaser.







Inloggningen

Vi börjar med att göra ett formulär där man kan fylla i användarnamn och lösenord. Formuläret skall även innehålla en knapp som vi trycker på när vi skall logga in. För att hålla nere det antal sidor som skapas i det här projektet så väljer jag att använda samma fil för validering av inloggningen också (login.asp).

När vi har fyllt i vårat användarnamn, lösenord och klickat på "logga in" så skickas vi alltså tillbaka till samma sida där det görs en kontroll av min querystring. Jag valde att lägga till ?action=login i den url som skickas av formuläret. Detta för att hålla reda på om man har klickat på knappen för att logga in eller inte (det finns andra sätt, men jag valde detta på grund av enkelheten).


Nu går vi över på ASP-koden

Det första jag gör är att kontrollera om min querystring innehåller action=login. Gör den det så skall jag köra resten av ASP-koden, annars visas bara inloggningsformuläret igen.
Efter detta så passar jag på att lägga in värdena från formuläret i strängar, samtidigt som jag tar bort diverse ogiltiga tecken som kan störa min sql-sträng när jag sedan skall använda dessa strängar för att bygga denna.

Nu är det dags att bygga min sql-sträng som jag skall köra genom databasen sedan. Dett gör jag genom att välja ut ID(userID), användarnamn(userLoginName), fullständigt namn och epost(userEmail) från tabellen tblUsers där inmatad användarnamn och lösenord stämmer överens med de i databasen.
Nu är det dags att köra allting genom databasen och se om användaren har angett korrekta uppgifter. Detta gör jag genom att öppna mitt recordset och sedan kontrollera om jag fick något resultat tillbaka. Om jag inte fick något resultat betyder det att inloggningen misslyckades och jag skickar tillbaka användaren till inloggningen med ett meddelande.

Om jag däremot får ett rewsultat tillbaka så har inloggningen lyckats och jag lägger in ID(userID), användarnamn(userLoginName), fullständigt namn och epost(userEmail) i respektive session-variabler för att lättare kunna hålla reda på vilken användare som är inloggad jsut nu samtidigt som jag uppdaterar databasen med lite information, t.ex jag anger att användaren är inloggad, läggere på två poäng och sätter senaste inloggningsdatumet/tiden till Now().

Till sist så stänger vi databasen och skickar vidare användaren till nästa sida (den första efter inloggnigen).


login.asp

<%
if Request.QueryString("action") = "login" then
Dim objConn 'as object
Dim strConn 'as string
Dim strSQL 'as string
Dim strLoginName 'as sstring
Dim strPassword 'as string
Dim rstUser 'as recordset

'Deklarera variabler för inloggningsnamn och lösenord
'Ta bort ogiltiga tecken från användarnamn och löseord (' och %)
strLoginName = Replace(Request.Form("fldLoginName"), "'", "''")
strPassword = Replace(Request.Form("fldpassword"), "'", "''")
strLoginName = Replace(strLoginName, "%", "")
strPassword = Replace(strPassword, "%", "")

'Skapa databaskopplingen
Set objConn = server.CreateObject("ADODB.Connection")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/community.mdb")
objConn.Open strConn

'Välj ut användaren som har angivet användarnamn och lösenord
strSQL = ""
strSQL = strSQL & "SELECT userID, userLoginName, userEmail, userFullName FROM tblUsers "
strSQL = strSQL & "WHERE userLoginName = '" & strLoginName & "' AND userPassword = '" & strPassword & "'"

'Öppna mitt recordset
Set rstUser = Server.CreateObject("ADODB.Recordset")
rstUser.Open strSQL, objConn, 3, 3

if (rstUser.EOF or rstUser.BOF) then 'Misslyckades inloggningen?

'Skicka tillbaka användaren till inloggnings-sidan med ett meddelande
Session("message") = "Misslyckad inloggning.
Försök igen
"
Response.Redirect("login.asp")

else 'Inloggningen lyckades

Response.Write(strSQL)

'Deklarera sessions som hjälper mig hålla reda på den inloggade användaren
Session("userID") = rstUser(0)
Session("userLoginName") = rstUser(1)
Session("userEmail") = rstUser(2)
Session("userFullName") = rstUser(3)

'Uppdatera information om användaren
strSQL = ""
strSQL = strSQL & "UPDATE tblUsers SET "
strSQL = strSQL & "userLoginStatus = 1, " 'Användaren är inloggad
strSQL = strSQL & "userLoginLatest = '" & Now() & "', " 'Användarens senaste inloggning
strSQL = strSQL & "userPoints = userPoints+2 " 'Man får 2 poäng för att logga in
strSQL = strSQL & "WHERE userID = " & Session("userID")
objConn.Execute(strSQL)

'Skicka användaren till startsidan
Response.Redirect("main.asp")

end if

'Stäng recordset
rstUser.Close
Set rstUser = nothing
'Stäng databaskopplingen
objConn.Close
Set objConn = nothing

end if
%>



Inloggning



<%=Session("message")%>

Användarnamn:

Lösenord:



Registrera dig här








Registreringen

Vi börjar med att göra ett formulär där användaren skall mata in de uppgifter vill ha.
Det vi vill ha med är: användarnamn, lösenord, e-post, fillständigt namn, adress till användarens hemsida, adress till en bild på användaren och en text där användaren presenterar sig själv.
Formuläret skickas till samma sida med querystringen action=register så att vi vet vad som skall göras.


Nu skall vi gå över till ASP-koden.

Det första jag gör är att kontrollera om min querystring innehåller action=register. Om så är fallet, så skall vi behandla data, annars så skrivs formuläret på sidan som vanligt.

I min kontroll så börjar jag med att deklarera mina variabler, detta för att lättare hålla reda på vilka variabler som används i dokumentet, samt att det är god programmerings-sed att göra det. En kontroll görs för att se om någon sträng är tom.
Sedan så tar jag bort onödiga tecken som kan ställa till problem när jag skall skapa min sql-sträng (' och %).

Nu är det dags att skapa och öppna min databas-koppling. Detta gör jag på samma sätt som i login.asp.
Därefter skapar jag en sql-sträng för att kontrollera om användarnamnet redan finns och öppnar ett recordset som kör frågan mot databasen.
Om användaren finns så lägger jag in ett meddelande om detta i en session-variabel och skriver ut formuläret igen, där meddelandet skrivs ut och man får försöka igen med ett annat namn. Om det inte finns någon sådant användarnamn registrerat så skall jag bygga min sql-sträng som stoppar in all data i databasen.
Jag använder mig av INSERT INTO-kommandot eftersom det är bättre prestandamässigt sett om man jämför med .Update-kommandot som finns för recordsets.
Här stoppar jag in allting som har skickats med formuläret genom att köra sql-frågan mot databasen med hjälp av kommandot objConn.Execute(strSQL).

Nu är det dags att skicka tillbaka användaren till inloggningssidan med ett meddelande om att han/hon är registrerad.


register.asp

<%
if Request.QueryString("action") = "register" then

Dim objConn 'as object
Dim strConn 'as string
Dim strSQL 'as string
Dim strLoginName 'as sstring
Dim strPassword 'as string
Dim strEmail 'as string
Dim strFullName 'as string
Dim strURL 'as string
Dim strPictureURL 'as string
Dim strPresentation 'as string
Dim rstUser 'as recordset

'Kontrollera om någon sträng är tom if strLoginName = "" then strLoginName = " "
if strPassword = "" then strPassword = " "
if strEmail = "" then strEmail = " "
if strFullName = "" then strFullName = " "
if strURL = "" then strURL = " "
if strPictureURL = "" then strPictureURL = " "

'Ta bort ogiltiga tecken från alla strängar (' och %)
strLoginName = Replace(Request.Form("userLoginName"), "'", "''")
strPassword = Replace(Request.Form("userPassword"), "'", "''")
strEmail = Replace(Request.Form("userEmail"), "'", "''")
strFullName = Replace(Request.Form("userFullName"), "'", "''")
strURL = Replace(Request.Form("userURL"), "'", "''")
strPictureURL = Replace(Request.Form("userPictureURL"), "'", "''")
strPresentation = Replace(Request.Form("userPresentation"), "'", "''")
strLoginName = Replace(strLoginName, "%", "")
strPassword = Replace(strPassword, "%", "")
strEmail = Replace(Request.Form("userEmail"), "%", "")
strFullName = Replace(Request.Form("userFullName"), "%", "")
strURL = Replace(Request.Form("userURL"), "%", "")
strPictureURL = Replace(Request.Form("userPictureURL"), "%", "")

'Skapa databaskopplingen
Set objConn = server.CreateObject("ADODB.Connection")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/community.mdb")
objConn.Open strConn

'Skapa sql-sträng för att kontrollera om anvndaren finns
strSQL = "SELECT userLoginName FROM tblUsers WHERE userLoginName = '" & strLoginName & "'"

'Skapa och öppna recordset
Set rstUser = objConn.Execute(strSQL)

if (rstUser.EOF or rstUser.BOF) then 'Namnet var ledigt.

'Skapa sql-sträng för att lägga in en ny användare
strSQL = ""
strSQL = strSQL & "INSERT INTO tblUsers ("
strSQL = strSQL & "userLoginName, userPassword, userEmail, userFullname, userURL, userPictureURL, "
strSQL = strSQL & "userPresentation, userLoginStatus, userRegistred, userLoginLatest, userPoints"
strSQL = strSQL & ")"
strSQL = strSQL & "VALUES ("
strSQL = strSQL & "'" & strLoginName & "', " 'Användarnamn
strSQL = strSQL & "'" & strPassword & "', " 'Lösenord
strSQL = strSQL & "'" & strEmail & "', " 'E-post
strSQL = strSQL & "'" & strFullName & "', " 'Fullständigt namn
strSQL = strSQL & "'" & strURL & "', " 'Hemsida
strSQL = strSQL & "'" & strPictureURL & "', " 'Bild-adress
strSQL = strSQL & "'" & strPresentation & "', " 'Presentation
strSQL = strSQL & "0, " 'Inte inloggad
strSQL = strSQL & "'" & Now() & "', " 'Registrerad dagens datum och tid
strSQL = strSQL & "'" & Now() & "', " 'Senast inloggad
strSQL = strSQL & "0" 'Antal poäng
strSQL = strSQL & ")"

'Kör sql-strängen mot databsaen
objConn.Execute(strSQL)

'Skicka tillbaka användaren till inloggnings-sidan med ett meddelande att han/hon är registrerad
Session("message") = "Du är registrerad.
Du kan nu logga in.
"
Response.Redirect("login.asp")

else 'Namnet var upptaget

'Skapa ett meddelande till användaren
Session("regmess") = "Namnet finns redan, försök med någonting annat."

end if

end if
%>


Registrera användare


<%
Response.Write(Session("regmess"))
Session("regmess") = ""
%>

">Användarnamn

">Lösenord

">E-post

">Fullständigt namn

">Hemsida

">Adress till en bild på dig

En presentation om dig själv











Avslutningsvis

Observera att även om denna kod fungerar, så är det inget speciellt avancerat forum. Koden är endast till för att beskriva hur man kan gå tillväga när man bygger ett inloggningssystem. Det är alltså ingen idé att maila mig angående förbättringar av denna kod, det får ni klara själva. ;-)
Om ni däremot skulle hitta något fel i artikeln så är ni hemskt välkomna att maila mig så skall jag rätta till detta.
Upp

3 Kommentarer


  1. Sina Tikab
    24 maj 2005

    tack för artikeln


  2. Silvio Fumei
    29 dec 2009

    Jag har mailat ansvarig för Pellesoft.se om att denna artikel skall tas bort omgående. Jag skrev denna artikel 2005-06-22 för publicering på www.aspsidan.se. Någon annan har helt enkelt kopierat al ltext och angett att de är skribent.


  3. Silvio Fumei
    31 jan 2010

    Upptäckte precis att jag angav fel datum då jag skrev originalet på denna artikel för ASPsidan.se. Rätt datum skall vara 2002-06-05, inget annat.

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino
  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av

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 570 864
27 962
271 767
186
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