Formular ueber mehrere Seiten

Bicko

Erfahrenes Mitglied
Hi,

da bin ich mal wieder mit einer neuen Formular Herausforderung. Mein Formular ist so gross, das ich es gerne ueber 4 Seiten gestalten moechte. Am Ende sollen diese Werte dann in eine DB geschrieben werden.

Ich habe mich dafuer entschieden, alle Werte ueber Hidden Fields weiterzureichen. Dafuer habe ich nun dieses hier gefunden:

Code:
For each key in request.form
    response.Write(key&"<input type=""text"" name="&key&" value="&request.form(key)&">") 
Next

Schoene Sache, da es mir automatisch die Hidden Felder auf der 2. Seite einbaut. Nun habe ich aber darueber nachgedacht, wo die Felder auf Richtigkeit ueberprueft werden. Eigentlich moechte ich vorm Abschicken alle Felder ueberpruefen und bearbeiten, also HTML Code rausfiltern und so. Das mache ich normalerweise so, das das Formular an sich selbst verschickt wird und die Ueberpruefung dann stattfindet. Doch wie komme ich dann auf Seite 2?

Ein response.redirect bringt ja nichts, da dann das mit den hidden Fields nicht mehr , also das For each key in request.form... funktioniert.

Nun dachte ich mir das ich direkt auf Seite 2 weiterleite, das also im Form Tag reinpacke action=default.asp?seite2" eine Fehlerueberpruefung dort durchlaufe und wenn dann Fehler auftauchen ein response.redirect zur ersten Seite mache, aber natuerlich sind dann alle Werte auf Seite 1 weg. Ist ja auch klar...

Aber wie loest man denn so etwas?

Da fehlt mir wirklich noch ein Haufen Erfahrung.... :( Ich hoffe es hat jemand einen Rat. Vielen Dank im voraus

Gruss Bicko
 
Hi

die Darstellung des Formulars (Userfreundlichkeit) und die Verarbeitung desselben sind 2 verschiedene paar Schuhe.

Du kannst dem User ein Formular der Übersichtlichkeit halber stückchenweise anbieten, das Formular selbst befindet sich aber auf einer Seite.

Ein Beispiel wäre ein Zusammenspiel zwischen Formatierung via CSS und der Abfrage in ASP. Die Formularüberprüfung passiert immer für den jeweilig sichtbaren Teil.

Hier ein Beispiel
*** Link entfernt ***

Dieses Beispiel wurde hier mal im php-Board gepostet, ich habe es lediglich für Klassik-ASP umgeschrieben. Wenn es Dich interessiert, sag Bescheid.
 
Zuletzt bearbeitet:
Moinsen,

mal wieder ein Sicherheitshinweis von mir:
prinzipiell sollte man es vermeiden Daten von der einen Seite zur nächste in Formularfeldern zu übergeben. Egal ob das Hidden-Felder sind oder mit CSS ausgeblendet sind. Sowas könnte von einem bösen Menschen (=Hacker) wieder ausgenutzt werden, da die Dateneingaben meistens nur einmal überprüft werden. Sind die Daten jetzt aber auf der nächsten Seite nochmals in Hidden-Felder (unverschlüsselt) vorhanden, können die Daten von einem Hacker verändert werden und somit die Eingabeüberprüfung wieder ausser Kraft setzen. Hier noch zwei Ansätze für eine sichere Methode:

Methode 1:
Mit Hilfe von Sessionobjekten werden die einzelnen Daten gespeichert und kommen somit nicht wieder zurück auf die Anwenderseite und lassen sich somit nicht wieder verändern. Nachteil ist hierbei, dass ASP automatisch einen Cookie anlegt. Anders als bei normalen Cookies handelt es sich hierbei um einen temporären Systemcookie, der nur eine verschlüsselte SessionID enthält. Wenn der User jetzt keine Cookies akzeptiert, kann das zu Problemen führen.

Methode 2:
Für diese Methode wird eine Datenbank benötigt. Und hierbei wird jede Dateneingabe sofort nach dem Absenden und Überprüfen in die DB gespeichert. So vervollständigt sich der Datensatz Schritt für Schritt. Zum Sicherstellen dass immer der richtige Datensatz gefunden wird, sollte eine eindeutige ID generiert werden. Dazu eigenen sich die entsprechenden GUID-Algorithmen, die eine sehr eindeutige ID generieren. Diese ID wird dann mit einem Hidden-Feld weitergegeben. Ändert jetzt ein Hacker die ID im Hidden-Feld, dann kann man eine Fehlermeldung ausgeben. Die Wahrscheinlichkeit, dass ein Hacker eine richtige GUID erraten kann ist fast Null. Am Schluss der Eingaben wird dann noch ein Häckchen in der DB gesetzt, dass der Datensatz aktiv und gültig ist. Sowas könnte man auch noch damit koppeln, dass der User in einer Bestätigungsmail einen Aktivierungslink findet und damit erst die Anmeldung gültig macht.

Und wegen der Systemarchitektur des Formulars und der Überprüfunsseite verwende ich einen sehr ähnlichen Ansatz wie Lucie. Bei mir gibt es eine Hauptseite, die nur für die Überprüfungen und Abspeicherungen der Daten zuständig ist. Sozusagen meine Steuerzentrale. Und dann Hab ich für jede Formularseite eine eigene ASP-Datei (mach ich eigentlich nur aus Gründen der Übersichtlichkeit, da bei langen Formularen sonst die Seite sehr lang werden kann). Mit Hilfe eines Action-Feldes wird jetzt in der Steuerzentrale die entsprechende Dateneingabe überprüft. Sind die Daten OK, wird die neue Seite geladen, ansonsten kommt man wieder auf die alte Seite zurück. Eingebunden werden die Formularseiten mit <!--#INCLUDE FILE="..."-->.

Ich hoffe, die Denkanstöße konnten dir noch zusätzliche Informationen liefern.
So long,
Chrisu

PS: die Methode mit den Hidden-Feldern hab ich selber lange Zeit benutzt. Erst nachdem mir ein Sicherheitsspezialist demonstriert hat was damit gemacht werden kann (und wie leicht das ist) hab ich seine Vorschläge beherzigt. Gerade wenn man mit den Formular sensible Daten (Kundendaten, Bankdaten, ...) abfragt sollte man immer auf die SICHERHEIT achten. Ein Hackerangriff kann nicht nur lästig sein sondern auch sehr teuer werden. Schadenersatzforderungen usw. Damit sollte man nicht spaßen. Das kann euren Kopf und euren Job kosten. Schaut euch mal die Logdaten vom Webserver oder der Firewall an. Da wird einem schlecht wieviele Angriffe man pro Tag hat.
 
Zuletzt bearbeitet:
Chrisu hat gesagt.:
Moinsen,

mal wieder ein Sicherheitshinweis von mir:
prinzipiell sollte man es vermeiden Daten von der einen Seite zur nächste in Formularfeldern zu übergeben. Egal ob das Hidden-Felder sind oder mit CSS ausgeblendet sind.

HI

man muss jetzt natürlich abwägen, wofür man es nutzen will.

Mein Beispiel ist ein sehr einfaches Beispiel, man kann es natürlich noch bis ins Ultimo ausprogrammieren. Es passiert alles auf einer Seite und es sind weder Hiddenfelder vorhanden noch werden sie übertragen, es wird lediglich nach Überprüfung der entspr. Formularteil ausgeblendet. Nicht dass hier jetzt Missverständnisse bezglich meines Beispiels aufkommen. Wer das Formular manuell verändern möchte, der soll es tun.

Was wird überprüft?

Der Name,
eine korrekte Email-Adresse
das Ankreuzen eines Buttons.

Wenn die Überprüfung hier durch ein Loch fallen sollte, wäre das auch kein Beinbruch.
Wenn jemand html einfügen möchte, dann muss er das tun. Das kann man bei der Ausgabe encodieren. Ansonsten über ein Regex bei der Überprüfung.

Dieses Formular habe ich auch nur zu Testzwecken gepostet um auch darzustellen, dass es noch andere Methoden gibt, als die Übergabe der Hiddenfields.

Ein Punkt wäre noch, dass man beim letzten Schritt die Daten in die Datenbank speichert (wenn das sein soll) und dann auf eine andere Seite weiterleitet, denn ein nochmaliges Reloaden der Seite würde die Daten noch einmal abspeichern, was ja keinen Sinn macht. Da gibt aber auch Möglichkeiten, Möglichkeiten und so weiter, um dies zu verhindern, man kann Bücher schreiben darüber. :)
 
Luzie hat gesagt.:
HI

Mein Beispiel ist ein sehr einfaches Beispiel,...


hallo,

ich habe genau das selbe problem und bin absoluter asp neuling.
der link auf dein beispiel wurde entfernt. gibt es hierzu ein tutorial oder ein einfaches besipiel irgendwo anders?

gruss dcd
 

Neue Beiträge

Zurück