Avatar billede agerled Nybegynder
15. februar 2004 - 11:54 Der er 18 kommentarer og
1 løsning

tjekke om bruger stadig er på siden

Hej.

Hvordan tjekker jeg bedst om en bruger stadig på siden. Hvis brugeren nu f.eks. har slukket sin computer uden at lukke siden ned. Jeg skal nemlig have sat online = 0 i db'en hver gang en bruger logger af....
Avatar billede keysersoze Ekspert
15. februar 2004 - 12:23 #1
global.asa - Session_OnEnd

Når en session udløber kan du "fange" den her og så lade global.asa logge brugeren ud.

http://activedeveloper.dk/aspdigital/kapitel1/globalasa.asp
Avatar billede nute Nybegynder
15. februar 2004 - 12:28 #2
du lægger Session_OnEnd i din global.asa fil som logger brugeren af:

http://www.devguru.com/Technologies/asp/quickref/session_onend.html

/nute
Avatar billede nute Nybegynder
15. februar 2004 - 12:29 #3
hehe ... reload kan nogle gange betale sig efter en telefonsamtale :-]
Avatar billede agerled Nybegynder
15. februar 2004 - 12:40 #4
skal jeg så bare include globas.asa på alle sider?
Avatar billede nute Nybegynder
15. februar 2004 - 12:43 #5
global.asa skal ligge i roden af dit web. den bliver kørt automatisk ... ingen inklude er nødvændig
Avatar billede keysersoze Ekspert
15. februar 2004 - 12:44 #6
Nej - global.asa skal ligge i roden af ens website og det "eneste" global.asa gør er at du kan afvikle nogle scripts ud fra 4 eventshandlers... men du har ikke nødvendigvis adgang til at kunne benytte global.asa
Avatar billede agerled Nybegynder
15. februar 2004 - 12:47 #7
ok. kan jeg så bare skrive mine database funktioner inde i den her:

Sub Session_OnEnd
    ' Skriv kode som skal køres når en session afsluttes
End Sub
Avatar billede keysersoze Ekspert
15. februar 2004 - 12:50 #8
ja
Avatar billede ch007 Nybegynder
15. februar 2004 - 12:51 #9
Jeg har prøvet forskellige ting... Fx. et script der automatisk logger personen af, hvis han lukker siden ned uden selv at logge af... Det virkede ikke optimalt. Min nye løsning virker perfekt. En keep-a-live-fil som er blevet nævnt herinde på Eksperten... Det er et script der hele tiden holder brugeren "i live" hvis han er på din side. Ellers ses han som offline/logget af
Avatar billede agerled Nybegynder
15. februar 2004 - 12:51 #10
kan jeg også skrive db connections i den fil?
Avatar billede agerled Nybegynder
15. februar 2004 - 12:52 #11
ch007 -> hvordan ser den fil ud...??
Avatar billede ch007 Nybegynder
15. februar 2004 - 12:56 #12
<% Response.Expires = 0 %>
<meta http-equiv="refresh" content="120">

If Session("Id") <> "" Then

  dag = Day(Date)
  mdr = Month(Date)
  aar = Year(Date)
  time = Hour(Time)
  min = Minute(Time)

TIDNU = aar & mdr & dag & time & min & sek

Set myConn = Server.CreateObject("ADODB.Connection")
DSN = "Driver={mySQL}; Server=localhost; Option=16834; Database=xxx; UID=xxx; PWD=xxx;"
myConn.Open DSN

    myConn.Execute("UPDATE Users SET Sidstelog = '" & TIDNU & "' WHERE Id = '" & Session("Id") & "'")

End if

%>
Avatar billede ch007 Nybegynder
15. februar 2004 - 12:58 #13
Hov... mangler lige et start <%

Når mine brugere logger ind får de en online-værdi = 1 (2 når de logger ud)

Når jeg så tjekker om personen er online, tjekker jeg de brugere hvor online = 1 og Sidstelog er indenfor de sidste 2 minutter
Avatar billede ch007 Nybegynder
15. februar 2004 - 13:04 #14
dag = Day(Date)
  mdr = Month(Date)
  aar = Year(Date)
  time = Hour(Time)
  min = Minute(Time)
  sek = Second(Now)

TIDNU = aar & mdr & dag & time & min & sek

'Trækker 2minutter fra tiden lige nu... 
LogTjek = TIDNU - 200

Set RS = myConn.Execute("SELECT Id, Brugernavn  FROM Users Where Online = '1' And Sidstelog > '" & LogTjek & "' Order by Brugernavn")


Manglede:  sek = Second(Now)    i sidste kode...

Ovenstående er min online-liste...


Første fil, altså keepalive-filen ligger i en skjult frame eller iframe
Avatar billede agerled Nybegynder
15. februar 2004 - 13:08 #15
er der en eller to filer..??

kan du ikke lige poste det sammenhængende...
Avatar billede ch007 Nybegynder
15. februar 2004 - 13:11 #16
Keepalive.asp:

<% Response.Expires = 0 %>
<!-- Næste line: Refresh/reloader sig selv hver 2. minut -->
<meta http-equiv="refresh" content="120">
<%
If Session("Id") <> "" Then

  dag = Day(Date)
  mdr = Month(Date)
  aar = Year(Date)
  time = Hour(Time)
  min = Minute(Time)
  sek = Second(Now)

TIDNU = aar & mdr & dag & time & min & sek

Set myConn = Server.CreateObject("ADODB.Connection")
DSN = "Driver={mySQL}; Server=localhost; Option=16834; Database=xxx; UID=xxx; PWD=xxx;"
myConn.Open DSN

    myConn.Execute("UPDATE Users SET Sidstelog = '" & TIDNU & "' WHERE Id = '" & Session("Id") & "'")

End if

%>

DENNE FIL LIGGER I EN SKJULT IFRAME - SØGER FOR AT BRUGEREN HELE TIDEN HOLDES I LIVE



Onlineliste.asp:


dag = Day(Date)
  mdr = Month(Date)
  aar = Year(Date)
  time = Hour(Time)
  min = Minute(Time)
  sek = Second(Now)

TIDNU = aar & mdr & dag & time & min & sek

'Trækker 2minutter fra tiden lige nu... 
LogTjek = TIDNU - 200

Set RS = myConn.Execute("SELECT Id, Brugernavn  FROM Users Where Online = '1' And Sidstelog > '" & LogTjek & "' Order by Brugernavn")

DENNE SIDE HENTER DE DER ER ONLINE. Tjekker altså om online = 1 og om de er blevet holdt i live (fra keepalive.asp) indenfor de sidste to minutter
Avatar billede agerled Nybegynder
15. februar 2004 - 14:11 #17
takker. læg lige et svar..
Avatar billede ch007 Nybegynder
16. februar 2004 - 22:07 #18
:-)
Avatar billede ch007 Nybegynder
16. februar 2004 - 23:05 #19
Tak!
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