Hej! Bättre är att du sparar sessionsid och datum för senaste förfrågning till siten. Hur registrerar jag en förfrågning som du nämner. Jag är med på din tanke men jag undrar bara hur jag fångar den. Det är ju lite praktiskt kanske att uppdatera databasen vid varje klick på sidan. Annars kan du spara session som en kaka och efter att användare stänger fönstret så dödar du kakan. Kaka = cookie [citerat eldar terzic Medlem:23354 [Få ut alla Sessionsid som används på sidan]#269870] Som Oskar redan svarat på så lägger du in ett extra fält i databasen i tabellen med användare. I det fältet sparar du datum och tid för senste aktiviteten, och utifrån det värdet bestämmer du om en användare är aktiv eller inaktiv. Jag har ett kolumn som heter online och är booleanskt. Jag sparar även ner sessionsid och tid för inlogg. När man klickar på logga ut så ändras online till = false och jag nollställer sessionsid. <b>>Dock finns det ju en felmarginal eftersom jag vet inte om han har loggat ut.</b> En sak du kan göra för att få lite bättre data är att på klientens sida ha ett AJAX script som med jämna mellanrum anropar en sida som uppdaterar ett datum och tid i databasen. Då skulle jag nog säga: Precis min tanke, riktigt bra sagt! Jag är inne på era tankar...Få ut alla Sessionsid som används på sidan
Hur kan jag få ut alla aktiva sessionsID som är aktiva på sidan. Jag skulle vila få ut dem till en lista.
När en användare loggar in så listar jag antalet inloggade. Men det är inte alltid de klickar på logga ut knappen som i sin tur tar bort användaren. Det innebär att användaren fortfarande är listad som online fast han inte är det. Jag har börjat spara ner SessionID som användaren har när han loggat in men jag vill då kunna loopa i genom aktiva sessionID och sedan kunna rensa undan utifrån det.
Så var min tanken!
/TyronneSv: Få ut alla Sessionsid som används på sidan
Utifrån det kan du sedan bestämma att t-ex- 20 minuter utan förfrågning räknas som inaktiv.Sv:Få ut alla Sessionsid som används på sidan
Jag kanske missförstår dig, kan du utveckla?
/TyronneSv: Få ut alla Sessionsid som används på sidan
Sv:Få ut alla Sessionsid som används på sidan
<citat>
Annars kan du spara session som en kaka och efter att användare stänger fönstret så dödar du kakan. Kaka = cookie
</citat>
Det hjälper inte, kakorna är det bara klienten som känner till, hur ska servern veta vad klienten hittar på?
[citerat Daniel Andersson Medlem:15590 [Få ut alla Sessionsid som används på sidan]#269860]
<citat>
I global.asax har du session start och session end. I klassisk asp var session end inte 100% att lita på, men du kan iaf se när en användare dykt upp på sidan första gången i session start.
</citat>
Du kan lita på session_end i asp.net under följande förutsättningar:
1) Asp.net stängs ned på korrekt sätt
2) IIS stängs ner på korrekt sätt
3) Du inte kör en farm
4) Du kör inproc sessions
Sammantaget så skulle jag inte alls lita på session_end.. ;)
[citerat Tyronne Engström Medlem:429 [Få ut alla Sessionsid som används på sidan]#269861]
<citat>
3. Jämföra dessa och plocka bort dessa som inte längre är aktiva från databasen.
</citat>
Gör det enkelt: Alla användare har ett extra fält för när de senast var aktiva (datum + tid), sen gör du bara en select count på alla användare med ett villkor för hur länge sedan sista aktiviteten måste ha ägt rum för att räknas som online. Varje tripp till servern måste sedan uppdatera i databasen för användaren så att timestampet uppdateras. FailsafeSv: Få ut alla Sessionsid som används på sidan
För att ta hand om de som loggar ut på rätt sätt kan du antingen ha ett extra boolean fält som säger om användaren är inloggad, eller om senaste tid för aktivitet inte är viktigt kan du sätta värdet till null då användaren loggar ut.Sv:Få ut alla Sessionsid som används på sidan
Det verkar knepigt att loopa igenom Seesionsid:erna . Så jag får nog gå på linjen att jag har en koll efter ca 40 minuter. och har man inte ändrats sedan dessa så uppdaterar jag online värdet. Dock finns det ju en felmarginal eftersom jag vet inte om han har loggat ut.
/TyronneSv: Få ut alla Sessionsid som används på sidan
...och det kan du inte komma ifrån. Så som browsers är tänkta att fungera kan du inte garantera en vettig siffra här, bara en hyfsat rimlig.Sv:Få ut alla Sessionsid som används på sidan
Fungerar dock bara om användaren har JavaScript aktiverat och webbläsaren klarar av AJAX.
Men varför är det så hemskt viktigt att veta hur många som är online? 40 minuter är lite för länge, en session slutar oftast efter 15-20 minuters inaktivitet.
Det bästa är nog att du har ett datum och tid fält i databasen som du vid varje förfrågan från en inloggad användare uppdaterar. Då kan du köra med en blandning av AJAX och loggning vid sidladdning från servern för att få så exakta siffror om möjligt.
Om du gör en förfrågan med AJAX en gång i minuten kan du lägga till exempel att alla som inte har gjort en förfrågan inom 5 minuter räknas som utloggade.Sv: Få ut alla Sessionsid som används på sidan
1. Om Javascript är aktiverat, skicka ett "jag är vid liv"-meddelande varje minut.
2. På serversidan: antag att javascript är inaktiverat tills man får ett sånt meddelande. Då använder man helt enkelt "senaste anrop" + X minuter för att avgöra om någon är online.
3. Annars använder man js-varianten.
Eller om man ska göra det än mer snajsigt; "Det senaste anropet vare sig det är ajax eller bara vanlig aktivitet är det som bestämmer om man är online, men ajax har kortare tid innan utloggning."Sv:Få ut alla Sessionsid som används på sidan
Om AJAX är tillgängligt blir användaren räknad som utloggad tidigare än om enbart förfrågningar till servern används.Sv: Få ut alla Sessionsid som används på sidan
Tack för hjälpen
/Tyronne