20. december 2003 - 15:22Der er
19 kommentarer og 1 løsning
Kørsel af script
Hejsa!
Jeg har brug for en funktion på min hjemmeside som køre et script når brugeren forlader min side... Kan man det ? Altså så snart en bruger lukker browseren eller skifter url så skal den lige køre et sidste asp script før siden forlades.
Jeg tænkte på at lave det i et popup vindu som åbnes når siden forlades, køre scriptet og lukke vinduet igen automatisk, men er der ikke en anden læsning ??
Nej. Du kan ikke bruge onUnload til at udføre asp kode. Og mht popup.. hvis brugeren har en popup-killer/blocker (som de fleste har), kommer popup'en overhovedet ikke frem. Det betyder at det sidste asp script ikke bliver udført.
Popup'en ville ellers være en ok løsning til et logud-script.. men nej, det kan man ikke. Så, hvis det er et logud-script, anbefales det at du bruger en session.timeout = X, hvor X er antal minutter uden aktivitet (brugerens side).
Ja det er et logout script som skal udføres... Men jeg har prøvet session... Jeg syntes dog ikke det virker helt som det skal... Den er ik altid til at regne med 100%. Jeg håbede bare der var en anden løsning... Da jeg har set fx. Dating.dk bruger en anden mulighed uden popup...
Sessions slettes når du lukker vinduet.. dvs, når du så åbner browseren igen, er du allerede logget ud. Du skal bare checke om f.eks. Session("login") = "ja", ved besøg på dine beskyttede sider.
Okay, når en bruger logger ind sættes Session("brugernavn") = "XXX" men hvordan tjekker jeg har mange Session("brugernavn") der køre på serveren ?? Hvis jeg fx. vil udskrive en liste over de personer som er logget ind samt et antal ?
Sub Application_OnStart Application.Lock Application("OnlineUsers") = "," Application.UnLock Application("BrugereOnline") = 0 End Sub
Sub Session_OnStart Application("BrugereOnline") = Application("BrugereOnline") + 1 End Sub
Sub Session_OnEnd Application("BrugereOnline") = Application("BrugereOnline") - 1
If Len(Session("brugernavn")) > 0 Then Application.Lock Application("OnlineUsers") = Replace(Application("OnlineUsers"), "," & Session("brugernavn") & ",", ",") Application.UnLock End If
End Sub
' --- procedure til at tilføje en online bruger --- Sub AddOnlineUser() if inStr(1,Application("OnlineUsers"),"," & Session("brugernavn") &",")=0 then Application.Lock Application("OnlineUsers") = Application("Onlineusers") & Session("brugernavn") & "," Application.UnLock End if End Sub
' --- funktion som retunerer antallet af online brugere --- Function CountOnLineUsers() Dim arrUsers ' --- lav et array med online brugere --- arrUsers = Split(Application("Onlineusers"), ",") ' --- antallet af online brugere er altid størrelsen på arrayet -1 --- CountOnLineUsers = UBound(arrUsers) - 1 End Function
' --- procedure til at udskrive online brugere --- Sub WriteOnLineUsers() Dim arrUsers Dim n ' --- lav et array med online brugere --- arrUsers = Split(Application("Onlineusers"), ",") ' --- udskriv liste --- For n = 1 To UBound(arrUsers) -1 Response.Write(arrUsers(n) & "<br>") Next End Sub
Sub DelOnlineUser() Application.Lock Application("Onlineusers") = "," Application.UnLock End Sub </script>
Problemmet er jeg kun vil vide hvor mange bruger som er logget ind... Altså hvor mangn Session("brugernavn") der køre på serveren + at jeg vil kunne lave en liste over den bruger som er online.
Den virker nemlig ikke... Prøv at kig på siden der står det her et sted: Denne kode fjerner brugeren fra den kommasepareret liste som vi gemmer i Applikations objektet (den samme kan du bruge i din kode hvis du har en logoff knap).
De er de her linier han referer til: If Len(Session("UserName")) > 0 Then Application.Lock Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("Username") & ",", "") Application.UnLock End If
Den erstatter brugernavnet (f.eks. "gatez") med "" (ingenting), og det betyder at "gatez" ikke længere er i listen.
Okay det prøver jeg ;) Men jeg har brugt det før og jeg syntes ikke det virker 100% men jeg prøver igen. Smid et svar :) Jeg blev da en hel del klogere ;)
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.