Archiv verlassen und diese Seite im Standarddesign anzeigen : Session_destroy
Ich arbeit mit Session bei einem Formular um Fehler und Falscheingaben abzufangen.
Jetzt will ich aber das Formular noch mals aufrufen, weil ich noch was nachbestellen will, und ich bekomme die Session jetzt nicht zerstört.
Er zeigt mir immer wieder die Fehler oder Eingaben aus dem ersten aufruf an.
kapitaeniglo 10-06-2003, 14:46 wie sieht denn dein code aus ??
ich glaube die auswirkungen vom session_destroy() bekommt man erst zu spueren wenn wieder eine neue seite angefortdert wurde ...
ne moeglichkeit waere also, dass man die session zerstoert und per header auf die formularseite weiterleitet....
also so funzt das bei mir zumindestens
gruss
iglo
Ok.
Aber was anderes.
Wenn ich jetzt eine Falscheingabe korrigiere, bekomme ich sie nicht in de Session rein. Er springt zwar wieder zurück auf das Formular aber hat nicht die neue Eingabe gespeichert.Wie bekomme ich das hin?
CrazyPip 10-06-2003, 14:55 mit session_unregister()...
überprüfe den alten $_SESSION['wert'] mit dem neuen Wert aus dem Formular und wenn die nicht übereinstimmen wird der alte sessionwert duch unregister entfernt und der neue wird durch session_register() eingefügt...
cya CrazyPip
Jetzt habe ich aber 31 Vars in der Session.
Ich kann doch jetzt nicht alle einzel prüfen. Es muss doch auch anders gehen.
Das ist meine Prüfung der auf Fehler und Setzen der Session:
if($error == 1)
{
session_unregister();// Was muss hier hin?
session_register("kunden_nr","was","domain",
"firma","FNR_firma",
"vorname","FNR_vorname",
"nachname","FNR_nachname",
"strasse","FNR_strasse",
"hausnr","FNR_hausnr",
"plz","FNR_plz",
"ort","FNR_ort",
"landesvorwahl","FNR_landesvorwahl",
"landesvorwahl2","FNR_landesvorwahl2",
"vorw1","FNR_vorw1",
"telefon","FNR_telefon",
"vorw2","FNR_vorw2",
"fax","FNR_fax",
"email","FNR_email");
$kunden_nr = $kd;
header("Location: /$was/auftrag1/$domain/$was/$error/");
}
Wie kann ich das jetzt so machen, das er die Neueingabe in die Session schreibt?
CrazyPip 10-06-2003, 15:25 z.B.
session_unregister("firma");
je nach dem, welche Felder der User eben geändert hat...
evtnl würde ich es so machen: Wenn der user merkt er habe eine falsche engabe gemacht, dann würde ich per value="" alle Felder ausfüllen, mit den Daten die der User bereits eingegeben hatte. Und egal ob er dann noch was ändert oder nicht, die sessionvars immer neu registrieren bei jedem abschicken des Formulars...
Seite 1 : Ausfüllen und abschicken
Seite 2: Überprüfen (wenn Fehler: Seite 1 ansonsten Seite 3)
Seite 3: in DB Eintragen oder Auswerten
...ansonsten wüsste ich auch nicht wie man schneller sowas realisieren kann - no sé
cya CrazyPip
Sorry, aber egal was ich jetzt probiert habe, es geht nicht.
kapitaeniglo 10-06-2003, 16:03 hi
wotan du arbeitest doch sicherlich mit ner php version > 4.1 ...
dann wuerd ich gar net mehr session_register benutzen sonder :
$_SESSION["varname"] = "wert";
zum setzen und aednern ...
aber bedenke, wenn du in einem skript ne sessionvariable aenderst, wird die auch erst beim naechsten seitenaufruf den neuen wert haben (glaub ich ....)
greetz
iglo
Das ist ja schon Klar.
Ich benutze zum auslesen $_SESSION[name].
Habe es jetzt auch mal so versucht:
$_SESSION["vorname"] = "$vorname";
Aber jetzt bringt er mir auf der nächsten Seite noch nicht mal mehr den Vornamen.
Ablauf:
Formular
Weiter auf Zwischenseite, hier wird geprüft und entsprechend weitergeleitet. Bei Fehler alls in der Session speichern und zurück zum Formular.
Im formular werden jetzt die Falscheingaben ausgegeben und farblich markiert.
Wieder weiter auf die Zwischenseite. Wieder prüfen ob alles richtig ist, es ist aber noch ein fehler drin, VAr in der Session speichern!!! Und zurück zum Formular. Hier werden jetzt aber nur die Session-Vars aus dem ersten aufruf ausgegeben. Die Änderungen aus dem zweiten Aufruf bleiben undeachtet!!! Und das muss ich beheben
eigentlich sollte es so keine Probleme geben:
// auf jeder Seite ganz oben
session_start();
// Sessionvariable setzen
$_SESSION['variable'] = $input;
// Sessionvariable löschen
unset($_SESSION['variable']);
// statt $_SESSION kannste auch $HTTP_SESSION_VARS nehmen
PS:
Bei $_SESSION["vorname"] = "$vorname";
lass mal die " weg, also so:
$_SESSION["vorname"] = $vorname;
@TBT
Bleibt dabei, es bleibt momentan alles LEER!:(
ich schau mir den Code an,
denke du hast dann ein ganz anderes Problem
Ich glaube ich hatte es schon mal hinbekommen, doch dann wollte ich es umbauen, und seit dem bekomme ich es nicht mehr hin. Mir war auch an andere Stelle aufgefallen, das ich teilweise auf die alte schreibweise ausweichen musste.
|
|