Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Support FAQs Entwicklung Wie kann ich Formulareingaben über mehrere Seiten transportieren?
Eine Ebene höher

Frage

Wie kann ich Formulareingaben über mehrere Seiten transportieren?

Antwort

Es gibt zwei Lösungen für dieses Problem:

Erste Lösung: Versteckte Eingabefelder

Wenn man auf einem Formular beispielsweise Name und Adresse abfragt, auf der nächsten Seite dann Informationen wie Email und Telefon kann man die Daten durch versteckte Eingabefelder mit weitertransportieren.

Bei DTML:

        <input type="hidden" name="name" value="&dtml-name;">

Bei ZPT:

        <input type="hidden" name="name" tal:attributes="value string:request/form/name">

Diese Eingabefelder baut man für jedes Datenfeld, das im aktuellen Form nicht vom Benutzer abgefragt wird, ein. Auf diese Art werden die Daten in einer Formular-Kette einfach weitertransportiert.

Nachteile dieser Methode:

Bei dieser Vorgehensweise werden alle daten immer über den Brwoser des Users transportiert. Dieser kann diese Daten mit geeigneter Vorgehensweise also manipulieren. Ausserdem ist eine Kontrolle der Eingabe so nicht direkt realisierbar.

Zweite Lösung: Sessions

Erheblich eleganter ist die Lösung, die Eingabedaten von Formular zu Formular in Session-Daten zu speichern. Dazu legt man ein browser_id_manager -Objekt und ein session_data_manager-Objekt an. Jedes Formular ruft mit dem "submit"-Button dann ein Python-Scvript auf, das die Formulardaten ausliesst und in das REQUEST.SESSION-Objekt schreibt. Anschliessend redirected das Script den Browser auf das nächste Formular.

Vorteil dieser Lösung:

Der Benutzer bekommt die Formulardaten nicht mehr in die Hand, ausserdem kann man in dem jeweiligen Python-Script auch eine Plausibilitätskontrolle der Benutzereingaben einbauen und ggf. den Browser zum selben Formular zurückdirigieren.


Letzte Änderung: 30.04.2006 • Autor: ajung