Rainer Teschke: 2 Probleme mit einem Fragebogen

Hallo,

ich bastele grade an einem Fragebogen mit PHP und SQLite. Dabei habe ich zwei Probleme:

Die Antworten werden als ULR Parameter abgeschickt:
http://localhost/fragebogen.php?bewertung=5&Abschicken=Abschicken

Wenn der Nutzer Reload bzw. F5 drückt wird die selbe Bewertung auch gleich für die nächste Frage abgegeben. Im Prinzip reicht es also, die erste Frage zu beantworten und dann bis zum Ende des Fragebogens nur noch F5 zu drücken. Kann man das irgendwie verhindern? Kann ich zum Beispiel am Anfang meines Scriptes die Parameter aus der URL löschen oder sowas?

Wenn die Nutzer meinen Fragebogen nicht zu Ende beantworten, sondern irgendwann abbrechen, soll eine Funktion aufgerufen werden, die alle bisherigen Antworten des Probanden löscht. Gibt es eine Möglichkeit, dass eine Funktion z.B. dann aufgerufen wird, wenn 15 Minuten nichts passiert ist? Falls es so eine Zeitfunktion gibt, was passiert dann, wenn der Nutzer den Browser schließt? Wird die Funktion dann trotzdem nach 15 Minuten aufgerufen?

Bevor ihr mir vorschlagt eine fertiges Fragebogen-Set zu verwenden: Meine Fragen stehen nicht fest sondern werden von einem evolutionären Algorithmus nach jedem Probanden dynamisch neu erzeugt.

Vielen Dank und viele Grüße,

Rainer Teschke

  1. Hallo Rainer,

    Wenn der Nutzer Reload bzw. F5 drückt wird die selbe Bewertung auch gleich für die nächste Frage abgegeben. Im Prinzip reicht es also, die erste Frage zu beantworten und dann bis zum Ende des Fragebogens nur noch F5 zu drücken. Kann man das irgendwie verhindern?

    Ich glaube, Du möchtest etwas über Sessions lernen.

    Kann ich zum Beispiel am Anfang meines Scriptes die Parameter aus der URL löschen oder sowas?

    Äh ja, selbstverständlich. Die sind nicht da, wenn Du sie nicht hinschreibst. Verzichte also auf die Parameter. Vielleicht hilft Dir der Abschnitt vordefinierte Variablen im Handbuch weiter. Es gibt nicht nur $_SERVER['PHP_SELF'] ...

    Wenn die Nutzer meinen Fragebogen nicht zu Ende beantworten, sondern irgendwann abbrechen, soll eine Funktion aufgerufen werden, die alle bisherigen Antworten des Probanden löscht.

    Wo ist das Problem? Schreibe die Daten zuerst temporär weg. Speichere erst dann, wenn die Daten komplett sind. Wie schon angedeutet, ich empfehle Dir Sessions.

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      danke für deine Antwort.

      Ich glaube, Du möchtest etwas über >Sessions >lernen.

      Ich habe schon vorher mit Sessions gearbeitet und mir jetzt nochmal das von dir verlinkte Kapitel durchgelesen. Hat mir leider nicht weitergeholfen. Das Problem ist ja, dass ich die Antworten per $_GET["bewertung"] aus den URL Parametern ziehe. Wenn jemand F5 drückt, zählt mein Sessions Zähler hoch, springt also zur nächsten Frage und zieht sich die selbe Bewertung aus dem URL Parameter.

      Wo ist das Problem? Schreibe die Daten zuerst temporär weg. Speichere >erst dann, wenn die Daten komplett sind. Wie schon angedeutet, ich >empfehle Dir Sessions.

      Das werde ich probieren.