Stefan: Datenschwund bei Erreichen des autom. Logouts

Hi,

ich habe in meine Community einen autom. Logout eingebaut, bzw. der User wird, wenn er z.b. 1 Stunde nicht aktiv war, zurück auf eine Login-Seite geschickt.

Das bedeutet aber auch, daß er das gerade "Geschriebene" verliert.

Wenn es nun nur 1 einziges Formular gäbe, wäre die Sache recht klar. Dann speichere ich ab, was er zuletzt schrieb und stellees ihm wieder zur Verfügung, wenn er sich einloggt.

Aber meine Seite hat wirklich unzählige Formulare mit jeweils unzähligen Eingabefeldern.

Zudem wird der User auch tatsäclich autom. ausgeloggt. D.h. es läuft ein Javascript (bzw. Ajax) mit, das den User bei erreichen der Logout-Zeit auf die Login-Seite leitet.

Wie könnte ich nun meinem User dieses ärgerliche Prozedere vorenthalten, dass er seine bereits eingegebenen Formulardaten verliert?

Hat einer ne Idee?

Stefan

  1. Wie könnte ich nun meinem User dieses ärgerliche Prozedere vorenthalten, dass er seine bereits eingegebenen Formulardaten verliert?

    So lange diese nicht zum Server gesendet wurden verliert er diese in jeden Fall. Einzige triviale Lösung: nicht rauswerfen.

    Nichttriviale Lösung: Beim Verändern eines jeden Formularfeldes setzt Du ein Cookie in welches Du den Inhalt schreibst- dazu musst Du eine Lösung finden, dass diese eindeutig sind. (und eine um ggf. die Begrenzung für Cookies einzuhalten. Beim Absenden des Formulars müssen die Cookies natürlich gelöscht werden.

    Freilich kannst Du die Daten nach dem Ändern des Formulars auch schon vor dem Absenden des Formulars mit einem ajax-Request absenden und in einer Session speichern. Beachte, dass auch hier zeitliche und Speicher-Grenzen existieren (können), die durchaus Sinn machen.

    Ferner könnten User sauer sein, dass Eingaben, die diese nicht bewusst abgeschickt haben, auf dem Server dennoch gespeichert sind.

    Jörg Reinholz

    1. Ferner könnten User sauer sein, dass Eingaben, die diese nicht bewusst abgeschickt haben, auf dem Server dennoch gespeichert sind.

      Und wenn nicht darüber, dann finden sie etwas anderes :-D ;-)

  2. ich habe in meine Community einen autom. Logout eingebaut, bzw. der User wird, wenn er z.b. 1 Stunde nicht aktiv war, zurück auf eine Login-Seite geschickt.

    Wie könnte ich nun meinem User dieses ärgerliche Prozedere vorenthalten, dass er seine bereits eingegebenen Formulardaten verliert?

    Wenn er gerade ein Formular ausfüllt, ist er nicht unaktiv, gelle? Ich würde sagen, wenn Du schon JS benutzt um ihn nach einer Stunde autom. umzuleiten, bau doch noch was ein, dass das Ausfüllen auch den Counter resetet, etc. Was bezeichnest Du den als aktiv? Seite aufbauen -> onload -> Set counter -> 1h -> Countdown?! Dann bau noch ein formular -> onchange -> Set counter -> 1h

    Cheers,
    Baba

    1. Wenn er gerade ein Formular ausfüllt, ist er nicht unaktiv, gelle?

      Wenn gerade, dann nicht.

      Aber ein Anruf, ein Auftrag und er kümmert sich 2 Std. um etwas anderes und will dann weiter das formular befüllen. Und siehe da... alles weg.

  3. [latex]Mae  govannen![/latex]

    Wie könnte ich nun meinem User dieses ärgerliche Prozedere vorenthalten, dass er seine bereits eingegebenen Formulardaten verliert?

    Du könntest dafür sorgen, daß der User die Daten lokal behält, je nach Datenmenge und -art bspw. mit localStorage oder IndexedDB (das allerdings noch experimentell ist und für manche Browser Nachhilfe (ungetestet, per Google herausgesucht) benötigt)

    Dann kannst du beim Wiederaufruf der Seite das Formular wieder mit diesen Daten befüllen.

    Zum Speichern würde ich folgendermaßen vorgehen:  Jeder Tastendruck im Formular startet einen Timeout mit beispielsweise 5000ms. Wird erneut eine Taste gedrückt, wird dieser Timeout wieder beendet und ein Neuer gestartet. Wenn kein Tastendruck erfolgt, wird eine Funktion aufgerufen, die die Daten in die Datenbank schreibt. So kann man erreichen, daß die Daten 5 Sekunden nach dem letzten Tastendruck automatisch geschrieben werden.

    Stur lächeln und winken, Männer!
    Kai

    --
    var jQuery = $(hit);
    I am Pentium of Borg. Division is futile. You will be approximated.
    SelfHTML-Forum-Stylesheet
    1. Du könntest dafür sorgen, daß der User die Daten lokal behält, je nach Datenmenge und -art bspw. mit localStorage

      Zum Speichern würde ich folgendermaßen vorgehen:  Jeder Tastendruck im Formular startet einen Timeout mit beispielsweise 5000ms. Wird erneut eine Taste gedrückt, wird dieser Timeout wieder beendet und ein Neuer gestartet. Wenn kein Tastendruck erfolgt, wird eine Funktion aufgerufen, die die Daten in die Datenbank schreibt. So kann man erreichen, daß die Daten 5 Sekunden nach dem letzten Tastendruck automatisch geschrieben werden.

      Hi,

      Deine Antwort sagt mir bisher am meisten zu.

      Dann kannst du beim Wiederaufruf der Seite das Formular wieder mit diesen Daten befüllen.

      Meinst Du, es gibt irgendwo ein Bsp., daß ich mir ansehen kann?

      Theoretisch ist mir klar, was Du vorschlägst, praktisch bin ich nicht sicher, wie ichs umsetzen kann. Was mir nicht ganz klar ist, ist das "sich finden der Daten jund des entsprechenden Formulares". Prinzipiell könnte ich ja die Daten serialisiert alle xy Millisekunden in eine temporäre Tabelle speichern.

      Ich könnte auch auf dieseArt das Formular wiederfinden. Problematisch wirds genau dann, wenn das Formular nur einmal so (also genau so) generiert werden darf und ansonsten die Daten in ein ganz anderes Formular eingefügt werden müßten.

      Aber so eine easy going-Lösung ist das echt nicht..

      Stefan