Avatar billede burgermann Nybegynder
26. juli 2002 - 15:26 Der er 23 kommentarer og
1 løsning

Session.timeout, global.asa, ud med bruger i db osv.

Hvis nu, jeg, i en database har regristeret nogle brugere, der lige er logget ind, men brugerne, istedet for at logge ud, trykker på krydset således at de for evigt vil være regristeret, gerne vil have min side til at slette brugeren fra databasen... hvad skal jeg så skrive i  global.asa?.

Jeg kan kun finde irriterende eksempler i global.asa hvor man kan tælle et antal hits på en side. Men det kan jeg ikke bruge til en dyt, for mit script skal jo først finde navnet på en bruger (en session) der er udløbet, og slette den fra databasen.

Kan nogen sådan regne mit problem ud, hvis det er dårligt formuleret OG endda hjælpe mig?
Avatar billede soes Nybegynder
26. juli 2002 - 15:29 #1
Man kan benytter sig af session_onEnd og så få den til at skrive i db'en. Dette virker dog vist kun på en MsSql eller MySql ikke på access
Avatar billede burgermann Nybegynder
26. juli 2002 - 15:34 #2
Ret så utrolig og urolig ufedt. Men tak for hjælpen. Jeg bruger netop access.

Kan man ikke få global.asa til at identificere en udløbet session og bruge den i sine koder, for bearbejdning:
---global.asa
sub session_onEnd
  application("AHA") = brugernavn
end sub
---enellerandenfil.asp
if applactiona("AHA") <> "" then
  ...blablablabla...
end if
Avatar billede burgermann Nybegynder
26. juli 2002 - 15:35 #3
ellers godt stavet af mig, hvad?
Avatar billede a1a1 Novice
26. juli 2002 - 15:42 #4
du kan godt selv om det er access :)

prøv at læse denne her der er en længere beskrivelse af hvordan du gør

http://activedeveloper.dk/julekalender/julegaver/whoson.asp


:)
Avatar billede a1a1 Novice
26. juli 2002 - 15:45 #5
du kan så modificere din session_onend til at slette eller opdatere et eller andet ;)

fx. ala (du skal så have user id i session("UserID") ;) )

If Len(Session("UserName")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("Username") & ",", "")
strSQL = "DELETE FROM <table> WHERE userID=" & Session("UserID")
oconn.open strconn
oconn.execute strconn
oconn.close
    Application.UnLock
End If
Avatar billede tmceu Praktikant
26. juli 2002 - 15:45 #6
a1 har ret i at det godt KAN virke med Access, men det kræver noget af et lykketræf af bl.a. server-, database- og provider version. Jeg ville ikke satste ret meget på at få det til at virke og slet ikke stabilt.
Avatar billede a1a1 Novice
26. juli 2002 - 15:46 #7
...:)
oconn.execute strconn
skal være
oconn.execute (strSQL)

hovse...
Avatar billede burgermann Nybegynder
26. juli 2002 - 15:47 #8
Hellig Ko!!!!!!!, da ikke også. Minsandten om ikke det ligner noget jeg kan bruge. Jeg kigger lige på det, hvis jeg er klog nok til at få det til at virke, acceptere jeg svaret. Hæhæ.
Avatar billede burgermann Nybegynder
26. juli 2002 - 15:53 #9
Det der undrer mig i den her sammenhæng er. At hvis man skriver som A1 i sin global.asa, er årsagen til eksekveringen af en funtion i session_onEnd netop, at en session er udløbet. Og hvis den er udløbet, hvordan kan man så indbringe den i funktionen???
Avatar billede tmceu Praktikant
26. juli 2002 - 15:57 #10
global.asa og de 4 indbyggede rutiner, deriblandt Session_OnEnd er specielle, idet de aut. kører når hhv. applicationen og sessionen starter og ender. Serveren holder selv øje med hvilke sessioner der er aktive og hvornår de udløber. En session dør enten når den eksplicit afsluttes med Session.Abandon eller når serveren opdager at den er timet ud, dvs. når den ikke har været anvendt i x minutter.
Avatar billede a1a1 Novice
26. juli 2002 - 15:58 #11
det kan man....:)

man kan vel også sige at sessionen ikke er udløbet endnu, det skal jo først i gennem den funktion der er lavet til at lukke den "helt" ned for den (session_onend) ?

jeg har ikke været ude for at det ikke har virket, men det kan da være at der er tilfælde hvor det går galt?
Avatar billede tmceu Praktikant
26. juli 2002 - 16:02 #12
a1 >> så har du tydligvis aldrig prøvet på IIS4/NT4. IIS4 som mange webhoteller stadig anvender, har en kendt bug der betyder, at Session_OnEnd kun kører i 95-97% af de situationer hvor der ikke laves en eksplicit end af sessionen med Session.Abandon.
Avatar billede burgermann Nybegynder
26. juli 2002 - 16:05 #13
Det er godt nok mystisk det her. Jeg prøvede først blot at skrive i global.asa, som jeg gør i resten af mine koder
set rs = Server.CreateObject("ADODB.recordset")
.....
rs.Delete
.....
rs.close
Det virker nogengange. Charmerende.
Avatar billede tmceu Praktikant
26. juli 2002 - 16:09 #14
Jeg hader at skulle sige dette, men du skal nok ikke forvente at det bliver ret meget bedre.
Avatar billede a1a1 Novice
26. juli 2002 - 16:10 #15
næææ, ikke hvor jeg har brugt det..
jeg har lavet noget med cookies og db, som jeg har brugt langt de fleste gange, mere fordi man så ikke bruger sessions overhovedet

men det vil jeg da huske, jeg har 2 nt4 server licencer, og en dag skal man vel bruge dem til noget :o)
Avatar billede a1a1 Novice
26. juli 2002 - 16:11 #16
tmceu-> mon ikke det er fixet i en service pack?
Avatar billede a1a1 Novice
26. juli 2002 - 16:14 #17
bugermann hvad har du af server?
Avatar billede tmceu Praktikant
26. juli 2002 - 16:15 #18
Nope, ikke på NT4. Men det er løst i IIS5 og jeg har endnu ikke oplevet- eller hørt at det ikke skulle være tilfældet.
Avatar billede burgermann Nybegynder
26. juli 2002 - 16:48 #19
Jeg bruger IIS 5,1.. men det er jo kun lokalt, guderne må vide hvilken server jeg ender med, at uploade det til. Hvilken forskel gør det?
Avatar billede burgermann Nybegynder
26. juli 2002 - 17:24 #20
Nu syntes jeg ikke engang mine session.timeouts fungerer!?!?!?
Avatar billede burgermann Nybegynder
26. juli 2002 - 17:30 #21
Hvis min session.timeout fungere og jeg i global.asa skriver:
sub Session_onEnd
  Application("virknu") = "Hallu?"
end sub

og i en anden asp fil, om opdatere konstant, skriver <%=application("virknu")%>. Burde den anden asp fil så ikke skrive "Hallu?" ?. For det gør den nemlig ikke
Avatar billede a1a1 Novice
26. juli 2002 - 17:42 #22
hvis den opdaterer hele tiden vil den jo også opdatere sessionen :)
Avatar billede burgermann Nybegynder
26. juli 2002 - 18:09 #23
Ja, det er rigtigt. Hvis det er den asp fil den opdatere.
Men hvis nu man har tre sider?
1.asp - hvor sessionen bliver indlet
global.asa - det rene tivoli
2. asp - som bliver opdateret hele tiden.
måske en default.asp - som et framesæt til både 1 og 2.asp
Avatar billede tmceu Praktikant
26. juli 2002 - 18:48 #24
Hvis begge filer er åbnet uder samme session, eks. hvis du åbner 1.asp i browseren og derefter åbner et nyt vinduet med CTRL+N, så mener jeg begge vil køre under samme session. Dette vil sandsynligvis sabotere din test :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester