sessionvariablen überschreiben
bert
- php
Hallo,
es ist nun schon einige Zeit her und ich hänge immer noch an dem Problem, daß ich in einer Session von PHP gerne die Variablen, wenn sie einmal drin sind überschreiben möchte.
Das ganze sieht so aus: Es gibt ein Formular, das ausgefüllt wird; die Daten werden in einer Session gespeichert; das Formular wird "abgeschickt"; das Formular erscheint erneut auf dem Bildschirm, allerdings ohne Felder zum ausfüllen, sondern mit den Eingegebenen Werten von vorher -> es soll als Kontrollformular dienen. Wenn derjenige, der das Formular ausgefüllt hat nun feststellt, daß er einen Fehler bei der Dateneingabe gemacht hat, dann soll er die Möglichkeit haben durch "zurück zum 1.Formular" diesen Fehler zu beheben. Man kann auch eine Änderung vornehmen, wird das Formular erneut abgeschickt erscheinen im Kontrollformular aber wieder die alten Werte.
Ich hatte die Verwendung von Sessions bisher so verstanden, daß sie immer den neuesten Wert aufnehmen, dies ist aber anscheinend doch nicht der Fall.
Hat jemand einen Tip wie es funktionieren könnte, oder vielleicht muß man es ja ganz anders lösen.
Grüße bert
hi
Ich hatte die Verwendung von Sessions bisher so verstanden, daß sie immer den neuesten Wert aufnehmen, dies ist aber anscheinend doch nicht der Fall.
es gibt eine hierarchie...
$_SESSION steht über $_POST,
ich habe das gleiche problem gehabt, und habe dann immer zuerst session_unregister(var) und anschliessend session_register(var)
aber ob das so sauber ist, weiss ich nicht.
Ich bin sowieso der Ansicht das Sessions nix für Formulare ist, ich arbeite da lieber mit einer Datenbank und speichere nach jeder Seite des Formulars die Daten zwischen.
Vielleicht funktioniert es auch wenn du die POST-Variablen erst einer anderen Variable zuweist und dann versuchst die Sessionvariablen zu überschreiben. Aber das ist wieder zu umständlich meiner meinung nach...
Uli
Grüße bert
Hallo Uli,
ich habe das gleiche problem gehabt, und habe dann immer zuerst session_unregister(var) und anschliessend session_register(var)
damit habe ich es auch schon versucht, bin ich aber auch nicht zufrieden mit. Geht man zurück zum 1. Formular, sind dann nämlich wieder alle Daten weg und das Formular muß komplett neu ausgefüllt werden.
Ich bin sowieso der Ansicht das Sessions nix für Formulare ist, ich arbeite da lieber mit einer Datenbank und speichere nach jeder Seite des Formulars die Daten zwischen.
Das hört sich schon ganz gut an und ich habe das auch schon überlegt, nur ist es mit dem Formular nicht getan. Das ganze soll hinterher so wie bei Ebay funktionieren. Man bekommt eine Mail über die Eingaben im Formular und kann sich diese über einen Link nochmal ansehen. Und da weiß ich nicht ob es mit einer Datenbank auch so funktionieren würde? Hast Du da vielleicht eine Idee, ob das geht?
Ansonsten Danke ich Dir schon mal für die neuen Ideen und werde sie mal ausprobieren.
Gruß bert
es ist nun schon einige Zeit her und ich hänge immer noch an dem Problem, daß ich in einer Session von PHP gerne die Variablen, wenn sie einmal drin sind überschreiben möchte.
Das ganze sieht so aus: Es gibt ein Formular, das ausgefüllt wird; die Daten werden in einer Session gespeichert; das Formular wird "abgeschickt"; das Formular erscheint erneut auf dem Bildschirm, allerdings ohne Felder zum ausfüllen, sondern mit den Eingegebenen Werten von vorher -> es soll als Kontrollformular dienen. Wenn derjenige, der das Formular ausgefüllt hat nun feststellt, daß er einen Fehler bei der Dateneingabe gemacht hat, dann soll er die Möglichkeit haben durch "zurück zum 1.Formular" diesen Fehler zu beheben. Man kann auch eine Änderung vornehmen, wird das Formular erneut abgeschickt erscheinen im Kontrollformular aber wieder die alten Werte.
Ich hatte die Verwendung von Sessions bisher so verstanden, daß sie immer den neuesten Wert aufnehmen, dies ist aber anscheinend doch nicht der Fall.
Das wird bald eine Session-FAQ. :-)
Also nochmal:
Session-Variablen gehen vor Form- und anderen Variablen.
wenn Du eine Session-Variable $name hast und per Form eine Variable $name belegst, tut sich für Zugriffe auf $name gor nüscht.
Was Du brauchst, ist
$HTTP_SESSION_VARS["name"] = $HTTP_POST_VARS["name"];
Damit sollte es gehen.