/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Vis navn fra database
Fra : Thomas K


Dato : 02-12-04 16:08

Jeg har et login system, og efter at brugeren har logget sig ind,
vil jeg gerne vise hans navn på siden (fx. velkommen
"brugernavn"). Hvordan kan jeg gøre dette?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Ukendt (03-12-2004)
Kommentar
Fra : Ukendt


Dato : 03-12-04 16:56

> Jeg har et login system, og efter at brugeren har logget sig ind,
> vil jeg gerne vise hans navn på siden (fx. velkommen
> "brugernavn"). Hvordan kan jeg gøre dette?
>


Hej Thomas

se her

http://www.html.dk/tutorials/asp/lektion11.asp


Mvh

M




Jonas Schmeltz Aaber~ (02-12-2004)
Kommentar
Fra : Jonas Schmeltz Aaber~


Dato : 02-12-04 17:40

> Jeg har et login system, og efter at brugeren har logget sig ind,
> vil jeg gerne vise hans navn på siden (fx. velkommen
> "brugernavn"). Hvordan kan jeg gøre dette?

Opret en database i MS Access med en tabel ved navn "Brugere".
Deri kan du have kolonner som f.eks.:
ID, Brugernavn, Adgangskode, Navn, Alder, By

login.inc:

<%
DBPATH = "database.mdb"

Function Login()
strBrugerNavn = Replace(Request("brugernavn"),"'","''")
strAdgangsKode = Replace(Request("adgangskode"),"'","''")

strSES_BrugerNavn = Replace(Request("bn"),"'","''")
strSES_AdgangsKode = Replace(Request("ak"),"'","''")

Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ="&Server.MapPath(DBPATH)

strSQL = "SELECT * FROM Brugere WHERE (Brugernavn = '" &_
strBrugerNavn & "' AND Adgangskode = '" &_
strAdgangsKode & "') OR (Brugernavn = '" &_
strSES_Brugernavn & "' AND Adgangskode = '" &_
strSES_Adgangskode & "')"

Set rs = myConn.Execute(strSQL)

If Not (rs.BOF OR rs.EOF) Then
strBrugerNavn = rs("Brugernavn")
strAdgangsKode = rs("Adgangskode")

Session("brugerid") = rs("ID")
Session("rn") = strBrugerNavn
Session("rp") = strAdgangsKode

Login = True
Else
strBrugerNavn = ""
strAdgangsKode = ""

Login = False
End If

rs.Close()
myConn.Close()
Set rs = Nothing
Set myConn = Nothing
End Function

%>


brugerinfo.asp:

<!--#include file="login.inc" //-->
<%
If Login() = True Then
%>
<html>
<head>
<title>Brugerinfo...</title>
</head>
<body>
<h1>Hej!</h1>
Brugerinfo:

<%

Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ="&Server.MapPath(DBPATH)

strSQL = "SELECT * FROM Brugere WHERE (ID = " & Session("brugerid") & ")"

Set rs = myConn.Execute(strSQL)

If Not (rs.BOF OR rs.EOF) Then
Response.Write "Velkommen hertil! Dit brugernavn er " & rs("BrugerNavn")
& "!<br><br>"
Response.Write "Du hedder i virkeligheden " & rs("Navn") & "...."
Else
Response.Write "Der er opstået en fejl!"
End If

rs.Close()
Set rs = Nothing
myConn.Close()
Set myConn = Nothing

%>

</body>
</html>
<%
Else
%>
<h1>Log ind!</h1>
<form action="brugerinfo.asp" method="post">
<input type="text" name="brugernavn">
<input type="password" name="adgangskode">
<input type="submit">
</form>
<%
End If
%>

På en tilfældig side, der skal beskyttes kan du gøre følgende:
<!--#include file="login.inc" // -->
<%
If Login() = True Then
%>
(side)
<%
Else
%>
(loginformular)
<%
End If
%>


MVH Jonas (aka Juke)



Thomas K (02-12-2004)
Kommentar
Fra : Thomas K


Dato : 02-12-04 19:41

Hej Jonas,

Jeg har allerede oprettet login samt database, så al den tekst du har skrevet
forvirre mig lidt, så hvis jeg lige giver dig nogle oplysninger, kan du så
ikke skære det ned til kun at indeholde "vis brugernavn funktionen"?

1. Database hedder database.mdb og ligger samme sted som resten af filerne.
2. Databasens indhold hedder user og oplysningerne er kun username og
password.
3. Session hedder login

Skriv endelig hvis der er brug for flere oplysninger.

Også tak til Mette, men jeg kan desværre ikke bruge oplysningerne. Det kræver
nemlig at form henviser til siden man skal ind på, og det er ikke muligt da
det skal vises på flere sider.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jonas Schmeltz Aaber~ (02-12-2004)
Kommentar
Fra : Jonas Schmeltz Aaber~


Dato : 02-12-04 21:24

> Hej Jonas,
>
> Jeg har allerede oprettet login samt database, så al den tekst du har
> skrevet
> forvirre mig lidt, så hvis jeg lige giver dig nogle oplysninger, kan du så
> ikke skære det ned til kun at indeholde "vis brugernavn funktionen"?
>
> 1. Database hedder database.mdb og ligger samme sted som resten af
> filerne.
> 2. Databasens indhold hedder user og oplysningerne er kun username og
> password.
> 3. Session hedder login

Indeholder sessionen brugernavnet, eller hvad?


brugerinfo.asp:
<html>
<head>
<title>Brugerinfo</title>
</head>
<body>
<h2>Brugerinfo</h2>
<%

Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ="&Server.MapPath("database.mdb")

strSQL = "SELECT * FROM user WHERE username = '" & Session("login") & "'"

Set rs = myConn.Execute(strSQL)

If Not (rs.BOF OR rs.EOF) Then
Response.Write "Dit brugernavn er: " & rs("username") & "!<br>"
Response.Write "Dit password: " & rs("password") & "...<br>"
Else
Response.Write "Der er opstået en fejl!"
End If

rs.Close()
Set rs = Nothing
myConn.Close()
Set myConn = Nothing

%>
</body>

</html>


MVH Jonas (aka Juke)



Thomas K (02-12-2004)
Kommentar
Fra : Thomas K


Dato : 02-12-04 23:14

Hej Jonas,

Jeg har redigeret lidt i den da den ikke helt passede til mit side, men jeg får
fejl meddelsen: Der er opstået en fejl. Scriptet er her:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN
strSQL = "SELECT * FROM user WHERE username = '" & Session("login") & "'"
Set rs = Conn.Execute(strSQL)

If Not (rs.BOF OR rs.EOF) Then
Response.Write "Dit brugernavn er: " & rs("username") & "!<br>"
Response.Write "Dit password: " & rs("password") & "...<br>"
Else
Response.Write "Der er opstået en fejl!"
End If
rs.Close()
Set rs = Nothing
Conn.Close()
Set Conn = Nothing
%>

Du får også lige scriptet fra login siden:

<%
SET RS = Server.CreateObject("ADODB.Connection")
rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("database.mdb")

If Request("mode") = "Check" then

Function unQuote(strTekst)
strTekst = Trim(strTekst)
unQuote = Replace(strTekst,"%","53")
End Function

   ' Gemmer formfelterne i Variabler
      strUsername = unQuote(request("username"))
      strPassword = unQuote(request("password"))

Sql = "Select Count(*) as Found from user where (username = '" & strUsername
& "') and (password ='" & strPassword & "')"
Set LO = RS.Execute(Sql)
if LO("Found") = 0 then
Session("login") = ""
error = "Du blev ikke godkendt af systemet"
else
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &
Server.MapPath("database.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN
strSQL = "SELECT * FROM user where (username = '" & Request("username") & "')
and (password ='" & Request("password") & "')"
Set ez = myConn.Execute(strSQL)
Session("login") = "yes mate"
Response.Redirect "start.asp"
EZ.Close
RS.Close
Conn.Close
end if
end if
%>

Så vidt jeg kan se burde session indeholde brugernavnet ikk?




Jonas Schmeltz Aaberg wrote in dk.edb.internet.webdesign.serverside.asp:
> > Hej Jonas,
> >
> > Jeg har allerede oprettet login samt database, så al den tekst du har
> > skrevet
> > forvirre mig lidt, så hvis jeg lige giver dig nogle oplysninger, kan du så
> > ikke skære det ned til kun at indeholde "vis brugernavn funktionen"?
> >
> > 1. Database hedder database.mdb og ligger samme sted som resten af
> > filerne.
> > 2. Databasens indhold hedder user og oplysningerne er kun username og
> > password.
> > 3. Session hedder login
>
> Indeholder sessionen brugernavnet, eller hvad?
>
>
> brugerinfo.asp:
> <html>
> <head>
> <title>Brugerinfo</title>
> </head>
> <body>
> <h2>Brugerinfo</h2>
> <%
&gt;
&gt; Set myConn = Server.CreateObject("ADODB.Connection")
&gt; myConn.Open "DRIVER={Microsoft Access Driver
&gt; (*.mdb)};DBQ="&Server.MapPath("database.mdb")
&gt;
&gt; strSQL = "SELECT * FROM user WHERE username = '" & Session("login") & "'"
&gt;
&gt; Set rs = myConn.Execute(strSQL)
&gt;
&gt; If Not (rs.BOF OR rs.EOF) Then
&gt; Response.Write "Dit brugernavn er: " & rs("username") & "!<br>"
&gt; Response.Write "Dit password: " & rs("password") & "...<br>"
&gt; Else
&gt; Response.Write "Der er opstået en fejl!"
&gt; End If
&gt;
&gt; rs.Close()
&gt; Set rs = Nothing
&gt; myConn.Close()
&gt; Set myConn = Nothing
&gt;
&gt; %>
> </body>
>
> </html>
>
>
> MVH Jonas (aka Juke)
>
>


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Michael (04-12-2004)
Kommentar
Fra : Michael


Dato : 04-12-04 01:27

[snip]
> 1. Database hedder database.mdb og ligger samme sted som resten af
filerne.
[/snip]

Knap så smart idé rent sikkerhedsmæssigt. Hele idéen med login falder til
jorden hvis jeg i min browser kan skrive f.eks.
vvv.ditdomæne./mappe/database-mdb

Og Vupti...hele databsen med alle brugere og adgangskoder.
Læg istedet din db i en folder man ikke kan komme til og prøv så så
server.mappath("database.mdb")
Evt. google lidt rundt efter "server.mappath()" efter implementationer.

Med venlig hilsen
Michael.


Jens Gyldenkærne Cla~ (03-12-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 03-12-04 11:30

Thomas K skrev:

> Scriptet er her:

Generel note: det er en god ide at nøjes med at bringe mindre
kodebidder i et usenetindlæg - ellers mister man hurtigt
overblikket.
Læs gerne siden her: <http://asp-faq.dk/article/?id=41>


> strSQL = "SELECT * FROM user WHERE username = '" &
> Session("login") & "'" Set rs = Conn.Execute(strSQL)
>
> If Not (rs.BOF OR rs.EOF) Then
> Response.Write "Dit brugernavn er: " & rs("username") &
> "!<br>" Response.Write "Dit password: " & rs("password") &
> "...<br>" Else
> Response.Write "Der er opstået en fejl!"

Når du får udskrevet "Der er opstået en fejl!", må det være fordi
du havner i else-delen. Du havner i else-delen når postsættet er
tomt - det vil sige der blev ikke fundet noget brugernavn der
matcher det du (måske) har liggende i session("login").

Det første man bør gøre er at tjekke sql-sætningen - måske
indeholder den ikke det man tror den gør. I dit tilfælde er
opbygningen nu o.k. - den eneste ubekendte er session("login"), så
du kan nøjes med at udskrive den. Prøv at lave en linje a la denne:

   Response.write "session.login = """ & session("login") & """"

- et sted på siden. Så kan du se om variablen er tom, eller den
bare indeholder noget andet end du tror. Med den viden i hånden kan
du så gå et skridt tilbage og kigge på den side der skal sætte
session("login") - altså din loginside.


[login-koden]

> if LO("Found") = 0 then
> Session("login") = ""
> error = "Du blev ikke godkendt af systemet"

Denne del er o.k.

> else
> strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &
> Server.MapPath("database.mdb")
> Set myConn = Server.CreateObject("ADODB.Connection")

Hov. Hvorfor vil du nu lave en ny sql-sætning. Hvis LO("Found") er
større end nul, er brugeren jo valideret - så skal du bare gøre
scriptet færdig og sætte session("login")


> strSQL = "SELECT * FROM user where (username = '" &
> Request("username") & "')
> and (password ='" & Request("password") & "')"
> Set ez = myConn.Execute(strSQL)

Her kører du en sql-sætning der pånær tjekket for anførselstegn er
*præcis* den samme som den du allerede har kørt. Det er der ingen
grund til - specielt fordi du i din kode slet ikke bruge EZ til
noget.

> Session("login") = "yes mate"

Her sætter du så session("login") til en fast værdi, der ikke har
meget med brugernavnet at gøre.


> Response.Redirect "start.asp"

Her forlader du siden.

> EZ.Close
> RS.Close
> Conn.Close

- så de tre vigtige linjer herover bliver aldrig kørt. Når du laver
redirect, stopper asp-parseren på redirectlinjen og går ikke
videre. Så det er vigtigt at lukke og slukke databaseforbindelser
*før* man viderestiller til en anden side.


[snip, bundcitat]

Læs gerne siden her <http://html.dk/nyhedsgrupper/usenet.asp>
(Gælder der nogle regler for nyhedsgrupperne?) eller evt. bare min
signatur.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Thomas K (03-12-2004)
Kommentar
Fra : Thomas K


Dato : 03-12-04 15:57

Jeg har klaret den nu. Fandt et andet login system og brugte det i
stedet. Tror at det tidligere login system havde en del fejl som
beskrevet, så valgte at starte forfra. Tak for hjælpen.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Tonni H Rasmussen (03-12-2004)
Kommentar
Fra : Tonni H Rasmussen


Dato : 03-12-04 13:49

Hej

Jeg har den samme funktion på min side. Jeg har lavet det på denne
måde.

Når du i forvejen har bygget alt database systemet op må du have en
side der tjekker om brugernavn er rigtigt eller ej. Ved mig ser det
sådan ud:

Hvis det er rigtigt, gør dette...
Session("login_junior") = "JA"
Session.Timeout = 30
Session("username") = rs("PersonBrugerNavn")

Jeg ved ikke om du har lavet dit system på samme måde, men hvis du
har dette, er det ikke så svært at vise brugernavnet på mange
forskellige sider.
Jeg gør det sådan:

Der hvor jeg vil have brugernavnet vist skriver jeg dette:
Hej <% Response.write Session("username") %>, dejligt at se dig!

Måske hjælper det dig.

Hilsen Tonni

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (03-12-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 03-12-04 13:58

Tonni H Rasmussen skrev:

> Jeg har den samme funktion på min side. Jeg har lavet det på
> denne måde.

Hvem svarer du og hvad svarer du på? Det er svært at se når du ikke
citerer noget. Læs gerne min signatur.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste