Just nu i M3-nätverket
Jump to content

Hur man ser hur många som är inloggade.


Jona41

Recommended Posts

Hejsan.

Jag håller på att utveckla ett forum i ASP, men har ett stort problem.

Jag vet inte hur jag ska göra för att visa vilka som är inloggade. T.ex så att man klickar på "Vilka besökare e online" så kommer en ruta där det står vilka som är inloggade. Jag har ingen aning om hur jag ska göra det.

Tack på förhand.

 

Link to comment
Share on other sites

mambofeber

hej! nu vet jag inte hur din inloggningsfunktion ser ut, men när ngn loggar in så kan man sätta en sessionsvariabel lika med TRUE.

 

'---om användare loggat in, sätt variabeln lika med TRUE

[log]

sAnvID=[b]Request[/b].Form([GRÅ]"anvID"[/GRÅ])
sPassw=[b]Request[/b].Form([GRÅ]"passw"[/GRÅ])

SQL = SELECT * FROM tabell WHERE anvandare='[GRÅ]"&sAnvID&"[/GRÅ]' AND losen='[GRÅ]"&sPassw&"[/GRÅ]'"
rs.Open SQL, CN 
[color="#0000ff"]If[/color] [color="#0000ff"]Not[/color] rs.EOF [color="#0000ff"]Then[/color]
[b]Session[/b]([GRÅ]"UserOnline"[/GRÅ]) = [color="#0000ff"]True[/color]
[color="#0000ff"]Else[/color]
[b]Session[/b]([GRÅ]"UserOnline"[/GRÅ]) = [color="#0000ff"]False[/color]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

[/log]

eftersom det är en sessionsvariabel så följer dess värde med oavsett hur du navigerar på hemsidan.

 

frågan är om man måste lagra sessionvärdet i databasen för att sedan kunna använda

SQL= SELECT * FROM tabell WHERE UserOnline ='TRUE'.

ngn annan kanske har en bättre lösning.

lycka till!

andréas

ps! kom på att man ha en online räknare i filen global.asa. tror man använder sig av

[color="#0000ff"]Sub[/color] [b]Session[/b]_OnStart()
kod för räknaren här.
[color="#0000ff"]End[/color] [color="#0000ff"]Sub[/color]

vet dock inte hur den ska se ut, men ngn annan kanske vet???

 

[inlägget ändrat 2005-05-28 16:23:01 av mambofeber]

Link to comment
Share on other sites

m a r c u s

På något sätt måste du nog använda applikationsvariabler (som delas av alla besökare) eller sätta en flagga i databasen när besökaren loggar in.

 

En applikationsvariabel sätter du genom Application("var")=val. Där kan du spara antal besökare, id, ett recordset eller liknande.

 

I global.asa får du använda Session_OnEnd() för att logga ut de besökare som bara stängde fönstret.

 

Link to comment
Share on other sites

Hmm, jo, det är väl bra för att se hur många som är online, men hur gör jag om jag vill se vilka som är inloggade? Om man anvä'nder databasen så är detta lätt, men då vet jag inte riktigt hur jag ska skriva mellan Sub Session_OnStart() och End Sub.

 

Link to comment
Share on other sites

m a r c u s

I Session_OnStart() ska du nog inte skriva något. Besökarna ska ju inte loggas in så fort de anländer.

 

Har du ett fält i databasen som heter t ex Online sätter du denna till TRUE när besökare loggar in och till FALSE vid utloggning. För säkerhets skull sätter du den till FALSE i Session_OnEnd() också eftersom alla besökare inte använder utloggningsfunktionen.

 

Vet inte om detta är garanterat att fungera dock om sessionsfunktionerna strular. Då kan en användare förbli inloggad vilket är mycket dåligt. Finns nog bättre lösningar.

 

Som jag också skrev kan du skapa ett recordset (eller annan struktur) och spara inloggade besökare i applikationsvariabel. Fortfarande samma problem, men applikationsvariabeln tas iaf bort när ingen besöker sidan. Skulle gärna själv vilja veta hur "de stora" löser det.

 

 

 

 

[inlägget ändrat 2005-05-28 17:15:51 av m a r c u s]

Link to comment
Share on other sites

Det funkade inte :S

Såhär ser det ut i global.asa:

<SCRIPT LANGUAGE=VBScript RUNAT=[b]Server[/b]>

[color="#0000ff"]Sub[/color] [b]Session[/b]_OnEnd()

fixadetonline

[color="#0000ff"]End[/color] [color="#0000ff"]Sub[/color]

[color="#0000ff"]Sub[/color] fixadetonline

namnet = [b]Session[/b]([GRÅ]"name"[/GRÅ])
[color="#0000ff"]Set[/color] Connect = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.Connection"[/GRÅ])
Connect.Open [GRÅ]"driver={Microsoft Access Driver (*.mdb)};dbq="[/GRÅ] & [b]Server[/b].MapPath([GRÅ]"db/forum.mdb"[/GRÅ])&[GRÅ]";"[/GRÅ]
[color="#0000ff"]Set[/color] RecSet = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.Recordset"[/GRÅ])
Visa = [GRÅ]"SELECT * FROM members where [name]='"[/GRÅ]&namnet&[GRÅ]"'"[/GRÅ]
RecSet.Open Visa, Connect, 3, 3
RecSet([GRÅ]"online"[/GRÅ]) = [color="#0000ff"]False[/color]
RecSet.Update
RecSet.Close

[color="#0000ff"]End[/color] [color="#0000ff"]Sub[/color]

</SCRIPT>

 

Link to comment
Share on other sites

m a r c u s

Vad är det som inte fungerar? Utloggning? Hur har du testat?

 

 

 

 

[inlägget ändrat 2005-05-29 16:04:35 av m a r c u s]

Link to comment
Share on other sites

RecSet("online") ändras inte till false.

Det står att jag fortfarande är online (om jag inte klickar på logout).

 

Link to comment
Share on other sites

m a r c u s

Jag antar att du har stängt alla dina webbläsar-fönster och databasen är fortfarande inte uppdaterad.

 

Jag har för mig att jag hade stora problem med att felsöka i global.asa när jag höll på med det ett tag sedan. Fick starta om IIS och ha mig för att den skulle fatta att det var ny kod.

 

Testa att sätta en variabel i Session_onStart. Då vet du om den har läst filen iaf.

 

Link to comment
Share on other sites

Skåningen

Man kan i en databas även skriva in användarens id nummer och sen sätt i 1 annan tabell + 1 på så sätt är 1 tabell på antal inloggade och sen 1 som håller koll på vilket nanvändare som är online.

 

/Du kan alltid nå mig via skolans växel.

 

Link to comment
Share on other sites

Hmm, jag förstår dej inte riktigt skåningen.

Och jag testade det som du sa m a r c u s, det funkade inte ><

 

Link to comment
Share on other sites

  • 2 weeks later...

Jag skulle vilja GÄRNA veta hur ni löste detta, för jag håller på med det men global.asa är inte lätt att få det att fungera...

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...