Jag har ett inloggingssystem där jag låter användarna logga in sig.
Hur gör jag för att lista UT vem som är inloggade just nu.
Och en lista på top 10, de 10 senaste inloggade.
12 svar · 251 visningar · startad av fredrik99
Jag har ett inloggingssystem där jag låter användarna logga in sig.
Hur gör jag för att lista UT vem som är inloggade just nu.
Och en lista på top 10, de 10 senaste inloggade.
Detta verkar vara den absolut vanligaste frågan just nu. Om någon har en färdig lösning, från de tidigare diskussioerna, vore det fint att få upp den i wF Script.
Exempel:
Du gör en inloggning på en sida varpå du sparar användarnamn, tid för inloggning och sessionsid i en trevlig tabell i en databas.
När du sedan vill visa vilka som är inloggade så är det ju bara att läsa av tabellen i databasen.
Om du exempelvis bara vill visa de senast inloggade, så har du ju inloggningstiden som hjälp.
Ex.
<%
stm = "SELECT * FROM inloggade "
stm = stm & "ORDER BY tid DESC"
SET RS = Conn.Execute(stm)
FOR i = 1 TO 10
IF RS.EOF then
Exit FOR
END IF
Response.Write RS("namn") & "<br>"
RS.Movenext
Next
RS.Close
Cn.Close
%>
Alternativt är ju att du använder dig av ett räknarfält. Detta bör väl funka om jag inte sitter och svamlar i godnattmössan...
Eftersom du antagligen inte vill spara informationen för all framtid, så kan du ju skriva in en liten sql-snutt i Global.ASA's "Session_OnEnd", som tar bort användaren ur tabellen över inloggade.
Svårare än så behöver det väl inte vara?!
...såvida jag inte missförstått alltihop?!
------------------
"Life's a bitch who sucks... then you marry one who dosn't"
Precis, svårare än så behöver det inte vara :)
Men eg. behöver man inte en databas, man kan lika bra använda Applicationer. Det gör jag i min chatt som jag utvecklar, problemet är bara att man inte kan använda global.asa i något gratis webhotell.
Det är den enda nackdelen jag ser, och Session_onEnd måste man ju använda för att se nät användarna stänger chatfönstret eller går vidare till en ny adress utan att trycka på en logout knapp t.ex.
------------------
SPiN, bjorne.w@telia.com
Ja... jag vill ju inte att du skall se några nackdelar, så om man nu inte kan köra Global.ASA, så får man väl skriva sig en liten snutt som plockar bort de äldsta posterna i tabellen efter det att man lagt till den nya posten(besökaren)
Käckt va? ;)
------------------
"Life's a bitch who sucks... then you marry one who dosn't"
Men då kan iofs alla logga ut och det är först när det kommer någon ny, som man inser att alla är borta ;)
Ha det!
------------------
Mvh
Patrik
aka Brimba
Det har du faktiskt helt rätt i men...
Man kuuuunde ju ;) lösa det så att man uppdaterar tidsvärdet i tabellen när en enskild användare gör en aktiv handling, för att sedan använda värdet för att avgöra om man vill anse sessionen som aktiv(20min inaktivitet) och sedan plocka bort poster som inte uppdaterats, varje gång som någon hämtar uppifter ur tabellen...
Sen har du ju fortfarande kvar räknaren för att hålla reda på vilken turordning som de loggat in!
...men om man nu inte tycker att det är jättekul att småprata med databaser, så är nog application() ett bra alternativ!
:e
------------------
"Life's a bitch who sucks... then you marry one who dosn't"
Hmmm jag har ett användar system där man logga in och sedan använder sig av username session...
Det borde ju finnas någe smidigt sätt att visa vilka som är inloggade just nu...för att visa alla aktiva sessioner...Någon som har lite kod kanske? jag är vetig i skallen på detta..tack så länge.. ;)
för att visa alla aktiva sessioner...Någon som har lite kod kanske?
lessen, men det går inte. du får göra enligt tidigare förslag med en databas eller med applikationsvariabler.
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
that's what brian boitano would do!</A>
[Redigerat av @nders den 17 nov 2000]
Detta kan man väl lösa genom att se till att uppdatera en post i en databas när användaren loggar in.
Typ..
If Request.Form("password") = "opensesam" Then
RecSet("inloggad") = True
Response.Redirect "hemlig-sida.asp"
Else
Response.Write "Fel lösenord, duh.."
End If
och när han loggar ut eller blir inaktiv, blir "Inloggad" False...
Sen när man skall visa vilka som är inloggade...
SELECT * FROM users WHERE inloggad = True
Eller? ;)
------------------
*Notepad.exe for president*
[Redigerat av OveRRidE den 26 mar 2001]
Jag sparar alla som loggar in i mitt inloggningssystem men problemet är om någon inte loggar ut rätt eller att sessionen dör ut. Då ligger ju användaren kvar som inloggad och när man loggar in nästa gång så uppdateras bara posten med ett nytt datum för användaren.
Detta borde ju gå att lösa med att man tex. tar bort alla som är äldre än ett par timmar el. ngt. liknande. Någon som har nå bra förslag?
Jag har en användare som inte loggade ut som står som inloggad från den 16 mars hehe.
------------------
Ingenting är omöjligt, bara en utmaning.
Nu mumlar jag bara känner jag, men borde du inte kunna öppna ett recordset i global.asa och jämföra Session.SessionId mot klienter och radera de som inte finns kvar, typ med jämna mellanrum, t,ex vid en session.timeout? Om du väljer att lagra de som är inloggade i databasen vill säga.. ?
Som sagt jag har inte testat eller funderat så mycket på det så smiska mig om jag har fel :e
------------------
SELECT * FROM existence WHERE sex = 'female' AND age > '18' AND age < '25' OR name = 'Sandra Bullock' ORDER BY breastsize