PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JavaScript Frage zu Messagebox



godofkills
06.12.2010, 16:50
Hallo,
ich bin gerade dabei an einem kleinen php/mysql Projekt zu erstellent.
Dabei ist jetzt eine Situation aufgekommen, wo ich javascript evtl brauche.
Nur habe ich noch nie damit gearbeitet.
Mein Problem ist nun folgendes:
Ich brauche eine MessageBox bevor man das Fenster schließen will, denn wenn man dann auf OK klickt möchte ich gern vorher noch ein Wert in meinem table ändern, also ihn sozusagen auf 0 setzen. Damit ich weiß ob der User noch angemeldet ist.
Ich habe zwar ein logout Button aber wenn man den nicht benutzt steht man dauerhaft als online da.
Ist dies mit javascript realisierbar?

ManOki
06.12.2010, 16:56
http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onunload

geht schon, mit ajax kannst du an den server eine entsprechende meldung senden.
anderer (alt bekannter) weg: einfach immer zeitstempel der letzten aktion mitspeichern und wenn dieser älter als 5min ist, wird der benutzer wohl inaktiv sein.

godofkills
06.12.2010, 17:00
Also das mit dem Zeitstempel hatte ich überlegt ob es sowas gibt.
Aber weiß jetzt nicht wie ich das lösen soll.
Also wenn sich ein User bei mir anmeldet setze ich im table usr den Wer Status auf 1.
Wie könnte ich es dann realisieren dass, wenn der User länger als 5min nicht aktiv war, dass der Wert sich wieder auf 0 zurück setzt.

crykiller
06.12.2010, 17:01
Da liegt dein Problem du speicherts nur die 1, du musst aber die letzte Aktivität speichern per timestamp.

godofkills
06.12.2010, 17:05
Ok den timestamp zu setzen, in eine Spalte, bekomme ich noch hin. Aber wie bring ich jetzt den Server dazu, zu kontrollieren wie alt jeder einzelne timestamp ist.

Hanni2k
06.12.2010, 17:06
Genau. Du speicherst die letzte Aktivität als timestamp. Du musst dich dann aber auch drum kümmern das bei jedem klick den der Nutzer auf deiner webseite macht dieser Stempel aktualisiert wird. Für die OnlineListe brauchst du dann einfach ne abfrage wo die letzteaktivität < als 5 min ist.

select * from blabla where Aktueller_Timestamp - letzte_aktivitaet < 360

Keine Ahnung ob die Synthax so richtig ist. Du ziehst die letzte aktivitaet vom aktuellem timestamp ab. Alles was größer als 360 ist (60*5) is älter als eine minute. Oder hab ich grad nen denkfehler :D

godofkills
06.12.2010, 17:09
Ah ja klar. Hab da gerade gegen eine Wand gedacht. Danke für die Info. Ich werde es mal probieren.