OnUnload Problem

  • Hi.
    Ich habe ein frameset in dem ich gerne eine Funktion einbauen würde, die beim verlassen der Seite die Session zerstört.
    Dazu habe ich beim OnUnload eine JS Funktion aufgerufen die ein Fenster aufpoppen lässt in dem ein session_destroy() aufgerufen wird.
    Das ansich funktioniert.
    Aber leider wird auch beim aktualisieren der Seite via F5 oder Aktualisierungsbutton die Session zerstört.
    Ich habe schon versucht, einfach den Namen der URL auszulesen und mit dem Pfad zu vergleichen auf dem das frameset liegt.
    Das funktioniert aber nicht, da, auch wenn man eine neue URL eintippt beim Verlassen der Seite die Url vom Frameset weiterhin ausgelesen wird.

    Vielleicht hat von euch einer eine Idee.
    Hier noch mal zusammengefasst, falls mans oben nicht so verstehen konnte:
    Beim verlassen der Seite soll die Session zerstört werden.

    Gruß
    Mir nicht

    Viele Grüße

    Mir nicht

  • wieso machst du das überhaupt ?
    der sinn einer session ist doch, dass sie am ende des besuchs (schiessen den browsers) eben nicht mehr existiert

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • Wenn du von meiner Seite mit der Session auf eine andere Wechselst, dann bleibt die Session erhalten, weil das Session Cookie 10 Stunden gültig ist.
    Das mit den 10 Stunden soll auch so sein.
    Aber wenn nun einer die Seite verlässt, soll das Cookie nichtmehr gültig sein.
    Sobald du mit dem Browser auf eine andere Seite gehts, soll die Session zerstört werden.
    Das soll aus Sicherheitsgründen geschehen.
    Wenn z.B. ein Mitarbeiter von dieser Seite auf eine andere Wechselt und dann den Arbeitsplatz verlässt, kann irgendjemand kommen und zweimal auf den Zurück Button drücken und schon kann er im Programm arbeiten.
    Damit das nicht passiern kann soll eben das obengenannte gemacht werden.

    Viele Grüße

    Mir nicht

  • dann must du wohl die livetime runterstellen. die die zeit ja jedes mal beim seiten aufruf erneuert wird...

    andere möglichkeit sehe ich da nicht... da der browser die ja solange speichert wie er offen ist.. und nciht soo lange wie das fenster offen ist...

    möglich währe jedoch für die aufgabe einen extra browser....


    Oder bessere idee...

    du schreisbt das unod in die DB...

    und lässt alle 5 min einen cron jop drüber...

    dann noch beim seiten laden eien funktion, diese eintrag wiedr löscht...

    so das wenn der eintrag des unload länger als 3min in der DB steht. dass denn die sesison datei gelöscht wird... bzw ungeloadet ....

    verstehst die variation ?!

  • Ich galube ich verstehe deinen Ansatz GreenRover, aber das Löst das Problem nicht, wenn ich das richtig verstanden habe.

    Also nochmal:
    Ich logge mich ein:
    -> Session wird gestartet; Session Cokkie hält 10 Stunden (1 Arbeitstag)
    -> Ich kann ganz normal arbeiten
    -> Ich verlasse die Seite und gebe in die Adresszeile des Browsers z.B. https://www.forum-hilfe.de ein
    -> BEVOR ich auf forum-hilfe gelange, MUSS die Session der anderen Seite zerstört werden.

    Umkehrschluss:
    Wenn ich die Seite 10 Stunden lang nicht verlasse, kann ich 10 Stunden lang mit dem Webprogramm arbeiten, ohne dass ich mich neu einloggen muss.

    Dabei das Problem:
    Mit einem reinen onUnload wird die Session auch beim aktualisieren der Seite zerstört!

    Und nocheinmal die Essen:
    Beim verlassen der Seite auf irgendeine Art (Browser schließen, neue URL...) soll die Session zerstört werden. Aber nicht beim aktualisieren!

    Fragen? Fragen!

    Viele Grüße

    Mir nicht

  • Ok ich glaub jetzt hab ichs geblickt.
    Super Idee.
    Ich würds aber andersherum machen.

    Ind DB Extra Spalte: Eingeloggt!
    Sobald man auf die erste Seite kommt wird eine 1 gesetzt!
    Immer kontrollieren, ob eins gesetzt ansonsten Session daten Löschen.

    ABER:
    Die Kontrolle, ob das Flag gesetzt ist läuf immer, auch wenn keiner angemeldet ist.
    Wenn er nun die Null in der DB findet, versucht er immer nichtvorhandene SessionDaten zu löschen.
    Kriegt er dann nicht nen Error.

    Naja wie auch immer. Wenn du eine Antwort weißt, immer her damit.
    Ansonsten schönes WE.
    Ich mach jetzt Feierabend.

    Viel Spass beim Fußball dieses We

    Mir nicht

    Viele Grüße

    Mir nicht

  • ja, die idee ist nicht schlecht...

    ein feld für die SID, eins für ein/ausgelogt und eins für letzte aktion...

    dann löscht destroys du einfach die session wenn lezteaktion+3min<time() ist .


    das feld der SID brauchst jaum sie zu vernichten ....