Vad jag vet så kan man inte använda sig av sessioner när man kör Sub Session_onEnd. Det är ju då sessionen är avslutad.
------------------
PC-älskare prasslar i säven, och har malt i ryggen
www.webeye.nu
Är du med i facket?
29 svar · 427 visningar · startad av erik_nordell
Hejsan...
Jag vill ha en automatisk utloggning!
I databasen så¨uppdateras ett fält när man loggar in till online...
och när man lämnar sidan s¨å vill jag att den ska uppdatera fältet med dagens datum så här typ:
Sub session_onEnd
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.Mappath("db/databas.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM info where anvandarnamn ='"&Session("anvandarnamn")&"' "
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
RecSet("online") = date()
RecSet.Update
RecSet.Close
Connect.Close
men det funkar ej?
gör jag nått fel?
------------------
//Erik
//Tapiren.net
Vad jag vet så kan man inte använda sig av sessioner när man kör Sub Session_onEnd. Det är ju då sessionen är avslutad.
------------------
PC-älskare prasslar i säven, och har malt i ryggen
www.webeye.nu
Är du med i facket?
Nää men hur ska jag göra då?
jag vill ha automatisk utloggning om man bara sticker där ifrån utan popup fönster eller dyl.
------------------
//Erik
//Tapiren.net
det är faktiskt som så, att sessionerna finns kvar tills efter session_onend är klar. så det är inga problem att använda sig av sessioner i session_onend. jag kan inte se vad du gjort som gör att det inte funkar, tyvärr.
jag bara undrar vad som händer om du istället för att använda recset.update gör en riktig update fråga i sql?!
dessutom är det omöjligt för webservern att veta att du lämnat siten. session_onend körs antingen när timeouten inträffar, eller när du anropar session.abandon.
------------------
don't follow your friends -- inflate them
Japp....
Jag har en timepout på 5 minuter.
Du menar typ så här?:
Addera = "Update anvandarnamn FROM info where anvandarnamn ='"&Session("anvandarnamn")&"' " ??
Är det rätt?
------------------
//Erik
//Tapiren.net
typ:
update [info] set [online] = now where [anvandarnamn] = '" & session("anvandarnamn") & "'"
för att det ska göra samma sak som din recset-operation.
------------------
don't follow your friends -- inflate them
[Redigerat av @nders den 11 aug 2000]
hmmm.. sessions dör ju vid onend.. det finns bara kvar Session.SessionID då..
alltså när någon loggar in så måste du ha en kolumn som heter "sessionID" som du sätter till Session.SessionID..
och sen vid session_onend så tar du
SQL = "bla bla bla where SessionID = '" & Session.SessionID & "'" istället för Session("anvandarnamn") göjset..
patrik: är du säker?
det måste jag kolla upp...
mvh
------------------
don't follow your friends -- inflate them
hmmm..
hur var det?
är sessionen kvar eller?
men hur ser man om det är fel i global.asa?
Alltså scipt fel?!?
------------------
//Erik
//Tapiren.net
Detta är en gammal tråd :-Q
Men jag skriver vidare än då för jag har ej fått detta att funka!!
Min kod ser ut så här:
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.Mappath("../db/hyhhjkldhjkhjk34.mdb")
Addera = "Update [info] set [online] = date where [sessionsid] = '" & session.sessionid & "'"
Connect.Execute(Addera)
connect.close
men det funkar inte..
jag tycker att allt verkar se rätt ut...
------------------
Erki
http://www.tapiren.net - Din Community på Internet!
Kan ingen....
Hjälpa mig?
------------------
Erki
http://www.tapiren.net - Din Community på Internet!
Jag har nog löst det.....
Använd onunload eller hur det nu stavas.... fast du måste du ju ha en frame på sidan nånstans... tyvvär....
------------------
http://sendmess.freesqlhost.com/login.asp
Så har jag nu..
men det är inte så snyggt..
eller gör ej så mycket i och för sig.
men om nån kopplar ifrån utan att gå ur sidan så går det inte så bra :-(
Hur gör ex. Lunarstorm skunk mm?
De måste ju ha nått liknande i global.as?
------------------
Erki
http://www.tapiren.net - Din Community på Internet!
Hmmm, men du kan du ju dubbelkolla om om en användare har varit inloggad längre än en halvtimme så kan du ju göra ett script som kollar klocklan och jämför med den som står i databasen när användaren var senast inloggad.... men fortyfarande ha kvar det andra systemet för det är väl inte så ofta det händer....
egentligen skulle jag oxå vilja ha tag på ett riktigt sånt script.... dett tar ju en massa onödig kod.....
------------------
http://sendmess.freesqlhost.com/login.asp
Hmmm..
Får väll göra så...
*snyft*
------------------
Erki
http://www.tapiren.net - Din Community på Internet!
Man kan ju oxå lösa det så som jag har gjort...
Man har en application-variabel som innehåller alla users som e online, å varje gång de går till en sida, eller online-listan (eller liknande) laddas om, så skrivs tidpunken in i variabeln, så sidan vet när de senast var aktiva..
om de sen inte varit aktiva på t ex 5 minuter så kan man ju ta bort dem från application-variabeln som innehåller alla som e online... och då är de plötsligt offline :p
Ja, det är ett bra sätt. Lämpligtvis använder man ett Dictionary-objekt för att spara infon.
Det låter bra..
Kan du visa lite kod? :-)
//Erik