Runtop: POST-Paramter auf Gültigkeit und Vollständigkeit prüfen

Beitrag lesen

Hello Tom,

vielen dank das du mir hilfst und entschuldige dass ich mich jetzt erst melde, Arcor macht seit einigen tagen Probleme mit meiner Internetverbindung und die wurde mir bis heute 18 Uhr komplett gekappt!

Am Anfang wolltest Du nur einfache Postparameter auf Existenz prüfen. Wenn ich mich recht entsinne, hast Du sie dafür gezählt. Dann hast Du eingesehen, dass einem da ja beliebige Parameter untergejubelt werden können, was natürlich nicht sein darf. Du hast also die Namen überprüft. Das ist war schon ein Fortschritt. Da war dann aber öfter ein Name darunter, der nicht erwartet wurde (PHPSESSID).

Das ist nicht ganz richtig, im Beitrag vom 21. Mai 2009, 17:25 Uhr habe ich angedeutet, wenn ich das Formular beim ersten mal öffne, teils befülle und dann absende dann gibt das Script als echo folgendes aus: POST Zähler stimmt nicht und POST Parameter stimmen  nicht mit Array überein. Hierfür wurde als Prüfung einmal das zählen der übermittelten POST Variablen getätigt und als Zusatz ein Vergleichsarray der POST Variablen angewendet.
Ein Vergleichsarray (stark gekürzt im Beitrag veröffentlicht) existierte also hier bereits und das hat die unerwartete PHPSESSID als false abgewehrt.

Und nun fing das Trilemma an. Es sollten keine unerwarteten Namen auftauchen aber auch alle erwarteten vorhanden sein. Dumm nur, dass die erwarteten nicht immer kommen, sondern im Falle von Session-ID und Radio/Check/Select-Elementen nur übermittelt werden, wenn es notwendig erscheint.

Genau, hier muss ich anmerken das ich wirklich nicht die Session-ID erwartet habe da die Programmierung der session_start() viel später kam als die Prüfung der POST Variablen.
Ich konnte nicht ahnen das PHP als erstes ein Hiddenfield erstellt und beim zweiten öffnen wieder gelöscht hat. Wie man so schön sagt, Unwissenheit schützt vor Strafe nicht. :-))
Die Radio/Check-Elemente habe ich schon erwartet. Dieses Problem habe ich dann mit Hiddenfields umgangen und mit einem zusätzlichen Array (Wert Übermittlungs- sowie Vergleichsprüfung) dem POST gegenübergestellt. Wenn der Wert nicht stimmte dann wurde das Script abgebrochen.

Was jetzt erstmal fehlt, ist ein Plan (wie so oft).

Also bitte schreibe nochmal alle Parameter auf, die kommen dürfen, egal, ob sie jedes mal übermitelt werden, oder nicht, und zwar in der "Punktnotation" (Liest sich am leichtesten).

Ist das so richtig, oder meinst Du es anders?

(Parameter)               (M)       (C)      (D)        (R)
---------------------------------------------------------------------------
 1. popiloll             (mandatory)(       )(       )(Senden)
 2. ynnuf                (mandatory)(       )(       )(rewop)
 3. tiz                  (mandatory)(       )(       )(keinen festen Wert)
 4. diw                  (mandatory)(       )(       )(keinen festen Wert)
 5. firminw              (mandatory)(       )(       )(keinen festen Wert)
 6. straiw               (mandatory)(       )(       )(keinen festen Wert)
 7. pliw                 (mandatory)(       )(       )(keinen festen Wert)
 8. oriw                 (mandatory)(       )(       )(keinen festen Wert)
 9. laiw                 (mandatory)(       )(       )(keinen festen Wert)
10. vorname              (mandatory)(       )(       )(muss leer bleiben)
11. nachname             (mandatory)(       )(       )(muss leer bleiben)
12. strasse              (mandatory)(       )(       )(muss leer bleiben)
13. plz                  (mandatory)(       )(       )(muss leer bleiben)
14. ort                  (mandatory)(       )(       )(muss leer bleiben)
15. land                 (mandatory)(       )(       )(muss leer bleiben)
16. telefon              (mandatory)(       )(       )(muss leer bleiben)
17. fax                  (mandatory)(       )(       )(muss leer bleiben)
18. email                (mandatory)(       )(       )(muss leer bleiben)
19. email-bestaetigung   (mandatory)(       )(       )(muss leer bleiben)
20. betreff              (mandatory)(       )(       )(muss leer bleiben)
21. nachricht            (mandatory)(       )(       )(muss leer bleiben)
22. efeld                (mandatory)(       )(       )(muss leer bleiben)
23. capa                 (mandatory)(       )(       )(muss leer bleiben)
24. lala[0] bis lala[30] (mandatory)(       )(       )(hängt von Eingabe des Users ab)´

(Parameter)               (M)       (C)      (D)        (R)
---------------------------------------------------------------------------
25. PHPSESSID            (optional) (       )(       )(wird immer erneuert)
26. agar                 (optional) (       )(       )(keinen festen Wert)
27. ecod                 (optional) (       )(       )(keinen festen Wert)
28. kontaktper           (optional) (       )(       )(E-Mail,Fax,Telefon und Post)
29. checkboxeins         (optional) (       )(       )(9 bis 12 Uhr)
30. checkboxzwei         (optional) (       )(       )(12 bis 15 Uhr)
31. checkboxdrei         (optional) (       )(       )(15 bis 18 Uhr)
32. checkboxvier         (optional) (       )(       )(18 bis 20 Uhr)
33. dtauswahl            (optional) (       )(       )(Ja und Nein)

Was ich nicht verstehe ist C und D (mit Default aufgefüllt werden müssen).
Habe mal dazu gegoogelt aber aufschlussreich war das nicht. Es ging in erster Linie nur um MySQL und damit habe ich noch gar nicht gearbeitet.

Grüße,

Runtop