Sebastian: Formulardaten verschwinden bei Session-Nutzung

Hallo Leute,

folgendes Problem:

meine Formular-Skript ist folgendermassen aufgebaut:

<?php
if (!isset($status))
{Formular Anzeigen}
if ($status=="check")
{Eingaben checken}
if ($status=="error")
{Fehler ausgeben}
?>

als action des Formulars ist daher $PHP_SELF?status=check definiert.

Wenn im Check-Teil eine fehlerhafte Eingabe erkannt wird, ruft er $PHP_SELF?status=error auf und übergibt noch die Fehler-ID.

Im Fehlerausgabe-Teil gebe ich den Fehler aus und biete einen javascript:history.back()-Link an.

Soweit so gut. Dieses Skript-Skelett benutze ich für jedes Formular und jedes Projekt sehr erfolgreich. Der Benutzer geht bei einer Fehleingabe einfach zurück, ändert die Eingabe und Schluss.

Nun allerdings möchte ich dieses Skript in einer Umgebung mit Sessions einsetzen, in dem die Formulareingaben in einer Session gespeichert werden und an ein weiteres Skript übergeben werden.
Und sobald ich ganz am Anfang session_start() ausführe, sind alle Eingaben des Formulars nach der Fehlerausgabe und history.back verschwunden.

Was haben diese eigentlich unabhängigen Dinge miteinander zu tun und wie kann ich dem abhelfen?

Vielen Dank schonmal für Euere Hilfe,

Sebastian

  1. Hello,

    bie der Verwendung von Sessions sendet PHP automatisch einen Header, der den Browser bittet, die Daten nicht zu cachen. Das respektieren diese Dinger auch tatsächlich manchmal und dann sind die Daten eben "weg" bei History Back.

    Du solltest Deine Strategie dann ändern, und die Daten komprimiert mit dem Formualr mitsenden in einem hiddenfeld oder sie in der Session speichern. Das Blättern nicht mehr mit History Back durchführen, sondern mit den Methoden des "Affenformular" (hier mal danach suchen). Das Formular bekommt dann eben mehrere Zustände, die in der Session mitprotokolliert werden.

    Die Schwierigkeit besteht immer nur darin, wenn jemand ein solches Formular doppelt oder noch öfter öffnet. Das muss man irgendwie abfangen.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen