EKKi: doppelt vergebene Namen im HTML-Formular

Beitrag lesen

Mahlzeit aha,

... um Arbeit zu sparen :-)

Im Gegenteil: bei Deiner Konstruktion machst Du Dir erheblich mehr Arbeit und provozierst erheblich mehr Probleme, als wenn Du es "richtig" machen würdest.

Es gibt einen umfangreichen Bestellprozess mit ca. 40...50 durch mehrere HTML-Seiten "geschleppten" Werten.

Für so etwas gibt es Sessions.

<?

Short-Open-Tags waren noch NIE eine gute Idee.

reset($HTTP_POST_VARS);
while(list($key, $val) = each($HTTP_POST_VARS)) {
echo "<input type="Hidden" name="";
echo $key;
echo "" value="";
echo $val;
echo "">\n";
}

Abgesehen von dem, was dedlfix bereits schrieb: Werte, die Du - gleich in welcher Form - an den Browser ausgibst und anschließend von ihm ohne jegliche Gültigkeitsüberprüfung wieder übernimmst und für Dein Skript verwendest, sind ein dermaßen großes Sicherheitsloch, dass selbst mehrere Flugzeugträger samt Begleitflottille und inkl. dem sie umgebenden Ozean problemlos hindurchpassen. "ALL INPUT IS EVIL!" - diese Devise gilt IMMER und ÜBERALL. Verlasse Dich also NIEMALS darauf, dass Du vom Browser des Benutzers genau die Werte zurückbekommst, die Du ihm bei der Antwort auf seinen letzten Request als versteckte Felder ausgeliefert hast. Um Werte von einer Seite auf die andere zu übertragen, bieten sich Sessions an.

Damit werden alle per POST "empfangenen" Variablen per POST wieder weitergegeben.

Richtig. Und anschließend kann der Benutzer sie nach Belieben manipulieren, die Werte verändern usw. ... überprüfst Du auf JEDER Seite die Gültigkeit ALLER erhaltenen Formularelemente (inkl. den versteckten)?

Nun prüft die Seite aber manche Eingaben auf Korrektheit und ruft sich ggf. selbst auf (mit entsprechenden Fehlermeldungen etc.)

"Manche"? Keine gute Idee. Jede Seite sollte ALLE überprüfen ... oder Du sorgst halt dafür, dass bereits überprüfte und gültige Werte Deinen Server (der einzig "sichere" Hafen für die von Dir zu verarbeitenden Daten) nicht wieder verlassen. Und wenn doch, dann müssen sie beim erneuten Eintreffen wieder überprüft werden. Immer und immer und immer.

Die Frage ist nur, ob man sich darauf verlassen kann...

Kann man?

Nein, nicht in der von Dir beabsichtigten Weise.

(Bitte jetzt nicht erklären, daß man die Variablen-Übergabe prinzipiell anders lösen kann. das weiß ich.

Warum tust Du es dann nicht? Willst Du mit Absicht unsichere Anwendungen stricken?

Mich interessiert an dieser Stelle die obenstehende Frage.)

Der Browser üebrträgt nur die Werte aller Formularelemente (egal ob sichtbar oder versteckt) in der Reihenfolge ihres Auftretens im Quelltext auf die Art und Weise, die Du ihm sagst (GET oder POST) an den Webserver. Was dieser bzw. die dort laufende Skriptsprache tut, ist für Deine Fragestellung relevant. In PHP überschreiben z.B. "spätere" Werte die früheren. ASP dagegen legt für alle mehrfach vorkommenden Werte eine Collection an. Andere Sprachen mögen andere Vorgehensweisen haben ... probier's aus.

MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|