Christian Seiler: Ich drehe durch :o) => Sessions Problem !!!

Beitrag lesen

Hallo,

Hallo zusammen, ich habe einfach noch immer ein riiiesn Problem mit
den Sessions.

Deine Probleme sind in deinem Fall nicht die Sessions, sondern eher register_globals und Formularbehandlung.

@session_start();

session_register("anrede", "vorname", "adresse", "postfach", "plzort", "email", "spenden", "spendeart");

Das funktioniert ja auch.

Wenn ich dann auf weiterklicke, und merke, dass ich zuvor z.b der Name falsch eingegeben habe, dann klicke ich auf zurück und will also denn Namen ändern. Jedoch das Problem ist, dass es dann die Variable nicht ändert !!!! Wieso geht das nicht, ich habe alles versucht :o(

1. Zum eigentlichen Thema: Du verwendest register_globals = on d.h. alle Eingaben werden in einer bestimmten Reihenfolge in globale Variablen geschrieben. Die Session-Variablen werden aus Sicherheitsgründen per default (und ich würde das nie im Leben abstellen) _nach_ den GET/POST-Variablen "importiert" (das geschieht übrigens bevor eine Zeile Deines Codes ausgeführt wird) Die Lösung: Du musst die Session Variablen anders nennen, als die Variablen, die Du im Formular verwendest.

2. Folgendes ist mir aufgefallen (so als kleine Anregung): Dass Du die Variablen zumindest teilweise validierst (auf Gültigkeit prüfst) ist erfreulich. Eine feinere Überprüfung wäre vielleicht wünschenswert, aber das ist hier erst mal Nebensache. Das Problem ist: wenn ich bestimmte Felder leer lasse, dann sagt er mir, welche Felder ich leer gelassen habe und ich muss zurück. Aber typische, intuitive Formularbehandlung geht so:

Wenn (Formular abgeschickt) {
  Wenn (Alle Eingaben korrekt) {
    Erfolgsmeldung / nächstes Formular
    Ende der Ausführung
  } Sonst {
    Fehlermeldung
    _kein Ende der Ausführung_
  }
}
Formular Anzeigen (mit den evtl. vom Benutzer schon übergebenen Werten)

So wird das Formular im Fehlerfall nochmal mit den Eingaben angezeigt. (und der Benutzer muss nicht mit zurück wieder zum Formular springen)

Grüße,

Christian

P.S.: in der </faq/> steht, wie man anklickbare Links macht.