onClose? Fensterschließen abfangen

Hi,

Ich wollte so was machen das wenn man meine Homepage schließt das ich das mit javascript abfange und mittels eines abschicken eines Formulars ein PHP-Script auszuführen (Um genauer zu sein ein "Logout").
Jetzt habe ich es schon so probiert das ichs mittels den Evant-Handlers onBlur und onunload das schließen eines Fensters abfangen. Doch diese Events werden beim Aktualiesieren und abschicken von Formularen ausgelöst.
Ich brauch aber sowas, dass mir wirklich nur das schließen eine sFenster abfängt.
Geht das überhaupt??? Wenn ja wie???


Gruß
CPU8080
 
also ein onclose oder sowas gibts nicht, onunload wird einfach ausgfüht sobald du die aktuelle seite verlässt, sprich also auch wenn du ein Formular abschickst.

da könntest du was zusammen mit onsubmit machen, das die weiterleitung von onunload nur dann ausgefüht wird, falls onsubmit nicht getätigt wurde.
Da ich aber javascript nicht sehr gut kann, kann ich dir auch kein Beispiel liefern.

die EventHandler findest du ->Hier<-
 
Ich glaube nicht das du mit js, das gewünschte Ergebnis erreichst.
Was ist wenn der User vor dem schliessen des Fensters die Internetverbindung
trennt oder diese aus anderen Gründen getrennt wurde.
Ich würde in PHP session zur Loginprüfung benützen und in php die session.gc_maxlifetime
entsprechend einstellen.
Wenn du auf jeder Seite prüfst ob die session existiert hat der User die eingestellte Zeit die Seite zu lesen.
Über ein <meta http-equiv="refresh" content="..."> könntest du dann kurz vor Ablauf noch zusätzlich
prüfen ob die Verbindung noch "lebt", :Dob der User eingeschlafen oder tot ist erfährst
du allerdings nicht :D.

Schau´s dir mal an, ob dies nicht die bessere Lösung ist, für Leute die den
Logoutbutton nicht finden.

Gruss
 
Ich halte diese Idee nicht für sonderlich Sinvoll, da ich z.B. immer nur ein FF-Fenster offen habe und dann einfach die neue URL eingebe, also gibt es kein window.closed, und ich denke, das machen die meisten so, warum sollte man auch sein Fenster schließen und jedesmal neu öffnen?
Ich würde das entweder wie oben beschrieben mit einem Session-timeout machen, oder per PHP bei jedem Aufruf überprüfen, ob die letzte eingetragene Zeit (UNIX-Timestamp) kleiner als jetzige Zeit - timeout ist.
Natürlich müsstest du dann bei jedem Seitenaufruf in die Session den aktuellen Timestamp speichern.
 
Zurück
Oben