Validierung und weitere Datenverarbeitung

WiZdooM

Erfahrenes Mitglied
Hallo,

ich benutze für mein Formular eine Validierung, die die Formulardaten an sich selbst schickt, die Daten validiert und die Felder mit falschen Eingaben markiert.
Soweit funktioniert das Formular. Nun bin ich aber an dem Punkt, dass ich sagen muss was mit den validierten Daten geschehen soll.

PHP:
if($pruefung->check())
{
		// Weiterverarbeitung der Formulardaten
}
else
{
		// Ausgabe der Fehlerstyles
		$pruefung->echoErrorStyles();
}


Normalerweise würden ohne Validierung die Daten in eine Übersicht gepackt, die man dann ausdrucken kann, indem im HTML-Form-Tag unter "action='abc.php' die Folgedatei angesprochen wird.

HTML:
<form name="topeuro" method="post" action="#" target="_self" class="text">
...
</form>

Aber da ich nun ja die Daten bereits an das Formular geschickt habe, weiß ich nicht wie ich dem Skript nun sagen kann: << Hey wenn alles okay ist, mach doch mit "abc.php" weiter. >>



Was mache ich das am Geschicktesten?
 
Zuletzt bearbeitet:
Wenn du auf ein Script verweist, dieses aber für sich merkt, dass es nicht notwendig ist und du >weiterleiten< willst auf ein anderes dann verwende:
PHP:
Header("Location: andere_datei.php");

Dabei gehen allerdings (danke ich) die $_POST Daten verloren, die man aber ganz einfach in einer Session zwischenspeichern kann. Zu dieser Lösung gibt es bereits einige Beiträge.
 
Ich weiß zwar nicht, ob es die "feine Art" der PHP Programmierung ist, aber es funktioniert.
PHP:
include ('nächstedatei.php');
exit();
Durch die Includierung bleiben alle $_POST oder $_GET Variablen erhalten und die restliche Ausgabe der alten Datei wird unterbunden.
 
Die "un"-feine Art ist perfekt für diese Zwecke.
Sofern irgendwer Informationen über Risiken und Nebenwirkungen hat, möge er/sie doch bitte kurz davon Notiz geben.

Header("location:xyz.php") geht hier nicht, da in meinem Skript eine Ausgabe während der Check() erfolgt.

Edit:

Einen "negativen" Effekt habe ich bereits bemerkt: Vorwärts werden die Daten weitergeleitet, aber rückwärts gehen die $_POST-Variablen bei einem javascript:history.back() verloren. ich nehme an, dem kann man mit Cookies bzw SessionVariablen entgegen wirken?
 
Zuletzt bearbeitet:
Header("location:xyz.php") geht hier nicht, da in meinem Skript eine Ausgabe während der Check() erfolgt.

Um das zu umgehen kann man die Ausgabe mit ob_start() puffern und somit trotzdem noch den Header ändern, da die Ausgabe wirklich erst ganz am Ende des Skriptes erfolgt oder mit einem Flush ( ob_end_flush(), ob_flush() ).
 
Einen "negativen" Effekt habe ich bereits bemerkt: Vorwärts werden die Daten weitergeleitet, aber rückwärts gehen die $_POST-Variablen bei einem javascript:history.back() verloren. ich nehme an, dem kann man mit Cookies bzw SessionVariablen entgegen wirken?

Das ist wohl eher Browser abhängig. Safari z.B. behält die Formulardaten und stellt sie bei einem Rückschritt über die Browsersteuerung wieder ein. Ich bin aber immer versucht, sowas möglichst zu unterbinden, da bei einem erneuten Absenden des Formulars mehrfache Einträge auftreten können bzw. das Abfangen solcher Wiederholungen extra Arbeit bedeutet. Lieber stelle ich den Leuten einen von mir kontrollierten Rückweg zur Verfügung.
 
Um das zu umgehen kann man die Ausgabe mit ob_start() puffern und somit trotzdem noch den Header ändern, da die Ausgabe wirklich erst ganz am Ende des Skriptes erfolgt oder mit einem Flush ( ob_end_flush(), ob_flush() ).

Stimmt, das hab ich gar nicht bedacht.

Das ist wohl eher Browser abhängig. Safari z.B. behält die Formulardaten und stellt sie bei einem Rückschritt über die Browsersteuerung wieder ein. Ich bin aber immer versucht, sowas möglichst zu unterbinden, da bei einem erneuten Absenden des Formulars mehrfache Einträge auftreten können bzw. das Abfangen solcher Wiederholungen extra Arbeit bedeutet. Lieber stelle ich den Leuten einen von mir kontrollierten Rückweg zur Verfügung.

Nun in meinem Fall ist das ein kontrollierter Weg. Die Kunden füllen das Formular aus, dieses wird validiert, anschließend bekommen sie eine Übersicht, die Sie ausdrucken sollen und danach soll das ganze in die Datenbank geschrieben werden, um zu einem späteren Zeitpunkt wieder aufgerufen werden zu können. Entweder von uns, oder von dem Kunden der dort einzelne Daten abändern kann, die dann wieder zurückgeschrieben werden (aber dieser Punkt ist noch nicht endgültig von oben beschlossen wordeFehlerkorrektur zwischen Formular und Übersicht zu gewährleisten und anschließen die Füllung der Datenbank mit den Informationen.
 
Zurück