Avatar billede frank74 Nybegynder
26. marts 2007 - 15:06 Der er 7 kommentarer og
2 løsninger

Sidst logget ind.

Jeg har nogle brugere på min hjemmeside som logger ind via et brugernavn og adgangskode som er gemt i en database. Hvordan kan jeg gøre sådan at jeg kan se hvornår en bruger sidst har været logget ind??
Avatar billede kalp Novice
26. marts 2007 - 15:16 #1
lav en kolonne i brugertabellen som kan gemme på dato.. og når du på din login side tjekker på om en bruger eksistere så kan du efterfølgende lave en update i tabellen på denne kolonne med dags dato
Avatar billede softspot Forsker
26. marts 2007 - 16:30 #2
Alternativt kan du lave en helt ny tabel som indeholder brugerid (fremmednøgle til brugertabellen) og en dato (som evt. sættes default til now (eller getdate() hvis det er SQL Server). Så opretter du blot en ny række i denne tabel hver gang en bruger logger på.

På denne måde kan du følge med i alle de gange den enkelte bruger har været logget på og hvornår. I fremtiden kan du så også lægge oplysning om IP, og hvad der ellers har relevans for den enkelte loginsession ned i denne tabel, uden at det forstyrrer tabellen med brugerens stamoplysninger.
Avatar billede frank74 Nybegynder
26. marts 2007 - 20:54 #3
Jeg har oprettet en kolonne der hedder "Sidst_Online" i min eksisterende database.
Når en bruger logger på kommer han til følgende side :
------------------------------------------------
<%
Set objConn = SErver.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../DATABASER/login.mdb")

strSQL = "SELECT * FROM Users WHERE UserID = " & Session("UserID")
Set objRs = objConn.Execute(strSQL)

While Not objRs.EOF
%>
<html>

<head>
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Main</title>
</head>

<body background="../IMAGES/startile.gif" text="#FFC600" link="#FFC600" vlink="#FFC600" alink="#975386">

<br>

<div style="text-align:center">
<%
Response.Write("Hej " & ObjRs("FirstName") & " " & ObjRs("LastName") & "<br />" & vbCrLf)
objRs.MoveNext()
Wend
%>
</div>                   

</body>

</html>

<%
' Luk databaseforbindelse
Set Conn = Nothing
%>
------------------------------------------------
Hvordan laver jeg så den update i tabellen??
Avatar billede kalp Novice
26. marts 2007 - 22:12 #4
strSQL = "UPDATE Users SET Sidst_Online = now() WHERE UserID = " & Session("UserID")
objConn.Execute(strSQL)

burde kunne gøre sådan efter den anden
Avatar billede softspot Forsker
26. marts 2007 - 22:44 #5
Vær i øvrigt lige opmærksom på at dit dokument risikerer at blive ugyldig HTML, når du sætter <html>, <head> osv. inde i løkken. Du bør rykke det op over den første <%. Jeg har retttet din kode til herunder:

<html>

<head>
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Main</title>
</head>

<body background="../IMAGES/startile.gif" text="#FFC600" link="#FFC600" vlink="#FFC600" alink="#975386">

<br>

<div style="text-align:center">
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../DATABASER/login.mdb")

strSQL = "SELECT * FROM Users WHERE UserID = " & Session("UserID")
Set objRs = objConn.Execute(strSQL)

if Not objRs.EOF then
  Response.Write("Hej " & ObjRs("FirstName") & " " & ObjRs("LastName") & "<br />" & vbCrLf)
  opdaterLogin = true
else
  opdaterLogin = false
end if

objRs.close
set objRs = nothing

if opdaterLogin then
  strSQL = "UPDATE Users SET Sidst_Online = now() WHERE UserID = " & Session("UserID")
  objConn.Execute(strSQL)
end if

' Luk databaseforbindelse
objConn.close
Set objConn = Nothing
%>
</div>                   
</body>
</html>


Jeg er klar over du nok bliver reddet af, at der kun er en bruger, men hvis der nu ikke er en bruger, så vil der slet ikke komme header-information (og starttag til body), så det er under alle omstændigheder en dårlig struktur. Gør i stedet som ovenfor, jeg har benyttet en if-then-else-end if i stedet for en while-løkken til et resultat som givetvis kun returerer max en række...

En sidste ting er, at du altid bør lukke dine recordset og databaseforbindelser efter du har lavet opslag i din database (og helst så tidligt som muligt). Så risikerer du ikke at servere spilde resurser eller i værste fald oplever memoryleaks (specielt i forbindelse med Access).
Avatar billede frank74 Nybegynder
29. marts 2007 - 07:33 #6
Mange tak for hjælpen. Det virker fint. Smid et svar begge to, så skal jeg nok fordele pointene. :-)
Avatar billede softspot Forsker
29. marts 2007 - 07:38 #7
Velbekomme :)
Avatar billede kalp Novice
29. marts 2007 - 09:17 #8
kommer her
Avatar billede softspot Forsker
29. marts 2007 - 15:26 #9
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester