03. januar 2004 - 12:22Der er
8 kommentarer og 1 løsning
Session-Tid?
Jeg har et lille problem med en chat jeg laver til mit community. Når man logger ind i communityet, sætter den session tiden til 60 minutter, men chatten som ligger i mappen /chat, skal tiden være en anden, som 5 minutter så jeg kan lave en online liste? Hvordan kan jeg gøre det?
Du kan ikke definere to forskellige timeouts.. enten skal du sætte timeout til 60, ellers til 5.
Det smarteste vil da være at lave en KeepAlive fil. for at holde session i live, og tjekke om bruger er online... den kan du jo lave til dit community også, og så bare generelt nøjes med at sætte session.timeout til 5 :o)
/Mads
Synes godt om
Slettet bruger
04. januar 2004 - 00:21#5
Jeg har community, hvor de må stenre en time, og en onlineliste til chat, som skal være med kun online brugere..Derfor er det sådan, og hvordan laver jeg en KeepAlive fil?
Synes godt om
Slettet bruger
04. januar 2004 - 00:30#6
chatten skal vel opdatere hele tiden.. skal du så ikke gøre det med en database, hvor brugeren hele tiden updater sin egen "sidst online på chatten"-tid.. det at brugeren har en session, kan jo kun læses af et script, der er requestet af den pågældene bruger, og kan dermed ikke vises uden nogen form for database eller lign.. eller har jeg misforstået det igen??
Jeg har lavet en KeepAlive.asp fil til noget info system jeg har lavet.
Det fungerer på følgende måde. Når en bruger logger ind bliver der smidt et "stamp" i en session (tid/dato) den gemmes så som Session("stamp") og det samme med brugernavnet i session("UserName").
jeg har så en Iframe (der IKKE vises) på siden et sted. ------------ <iframe src="Inc/KeepAlive.asp?user=<%= Session("UserName") %>&stamp=<%= Session("lastLogin") %>" style="display:none"></iframe> ------------
Som jeg så sender de to sessions til..
Selve min KeepAlive.asp ser ud som følger:
KeepAlive.asp ----------------------------
<meta http-equiv="refresh" content="120"> <% user = Request.QueryString("user") stamp = Request.QueryString("stamp")
set rs = conn.execute("SELECT * FROM " & strDb & ".users WHERE Uname = '" & user & "'")
If NOT rs.eof or rs.bof Then
If rs("lastLogin") <> stamp Then Session.Abandon() Response.Write "<script>top.document.location.reload()</script>" Else Session("Login") = True Session("UserName") = user Session("lastLogin") = RS("lastLogin") If RS("IsAdmin") = "true" Then Session("IsAdmin") = True Else Session("IsAdmin") = False End If End If Else Response.Write "<script>top.document.location.reload()</script>" End If
rs.close Set rs = Nothing Conn.Close Set Conn = Nothing %> ---------------------
Der er dog en masse ekstra i ovenstående, men i bund og grund, tjekker den op på, om stamp er større eller mindre end det stamp der er gemt i min database.. hvis det er tilfældet, så lukker den samtlige sessions (da det så kunne være en der har prøvet at "snyde" sig in via URL. ellers hvis den passer, så opdaterer den de nuværende sessions, så de sessions forbliver aktive. der er så smidt ind som META tag i KeepAlive.asp, at den skal refreshe hvert andet minut ( 120 ) .
Måske er det en "slamkode-løsning", det ved jeg faktisk ikke, men den fungerer efter hensigten til hvad jeg bruger den til.
Hvis andre har noget smartere vil jeg meget gerne se.. og ikke mindst lære :o)
/Mads
Synes godt om
Slettet bruger
07. januar 2004 - 17:27#8
Hvor skal jeg sætte den kode hen inde?
Synes godt om
Slettet bruger
13. januar 2004 - 17:01#9
Lukker!
Synes godt om
Ny brugerNybegynder
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.