Avatar billede medjeti Nybegynder
01. oktober 2001 - 16:12 Der er 5 kommentarer

Session_OnEnd: Slet filer

Hej, håber nogen kan hjælpe:

Jeg har en række brugere, hver med en mappe tilknyttet bruger-id\'et. Når en bruger forlader websitet (sessionen timer ud) vil jeg gerne slette alle filer i den respektive mappe.

Jeg skulle mene at noget á la dette skulle virke...

(Session(\"Folder\") indeholder den fysiske sti til mappen, da Server.MapPath ikke dur i global.asa)

<script language=\"VBScript\" Runat=\"Server\">
Sub Session_OnEnd
    If Session(\"Folder\") <> \"\" Then
        Set objFSO = Server.CreateObject(\"Scripting.FileSystemObject\")
        Set Folder = objFSO.GetFolder(Session(\"Folder\"))
        Set Files = Folder.Files
        For Each File in Files
            objFSO.DeleteFile File
        Next
        Set Files = Nothing
        Set Folder = Nothing
        Set objFSO = Nothing
    End If
End Sub
</script>

Er der en åbenlys fejl, jeg har overset, eller kan det bare ikke lade sig gøre på den måde?
Alle idéer er velkomne!
Avatar billede eagleeye Praktikant
04. oktober 2001 - 23:08 #1
Hvis session timer ud så har du vel ikke Session(\"folder\") mere eller hvornår bliver Session(varable) slettet.

Note, only the Application, Server, and Session built-in objects are available from within the OnEnd event handler.

Så Server.MapPath skulle da gerne virke i Global.asa. Eller ??
Avatar billede medjeti Nybegynder
08. oktober 2001 - 12:29 #2
Det ser faktisk ikke ud til, at man kan kalde en Session-variabel i Session_OnEnd eventen. Det virker mig nu lidt ulogisk - jeg ville umiddelbart tro at sessionen først blev slettet EFTER Session_OnEnd var triggeret.
Er der nogen der af- eller bekræfte dette?
Avatar billede eagleeye Praktikant
08. oktober 2001 - 13:08 #3
Det du siger lyder logisk.
Session_OnStart bliver kald når en bruger går ind på din side.
Session_OnEnd bliver kaldt når en bruger forlader din side. Spørgsmålet er så om Seesion timeout betraktes på lige fod med session_onEnd det tror jeg ikke for timeoutet er ikke det samme som at forlade stedet.

Måske du kan bruge Session OnTimeout. Jeg har fundet denne side omkring session:
http://www.e-dbms.com/downloads/documentation/cache4/cpi/cpisessions.html
De skriver at timeout svare til end session men de skriver ikke direkte at Session.OnEnd bliver kaldt.
Avatar billede medjeti Nybegynder
08. oktober 2001 - 13:23 #4
IIS-hjælpen siger at Session_onEnd bliver kaldt enten ved Session-timeout eller efter en Session.Abandon.

Sessionen slutter tilsyneladende ikke før EFTER Session_onEnd er kørt. Dette eksempel er fra MSDN:

Sub Session_onEnd()
  On Error Resume Next
  strSQL = \"INSERT INTO Sessions (EventType, UserID) \" _
      & \"VALUES (\'Session End\', \" & CLng(Session.SessionID) & \")\"
  WriteSessionData(strSQL)
End Sub

- Hvis man kan kalde Session.SessionID må man vel også kunne kalde en session-variabel...

Anyway, jeg tjekker lige dit link og roder videre med det.
Avatar billede eagleeye Praktikant
08. oktober 2001 - 13:25 #5
Ja men Session.SessionID styres det ikke af serveren?  Session variable er nogle man selv ligger ind. Men jeg kan nu heller ikke forstå hvis de skulle blive nedlagt før Session_OnEnd, det giver ikke rigtig mening.
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