Die Geschäftslogik einer Webanwendung wird auf Parameten abgebildet. Ebenso befinden sich Nutzdaten, Benutzereingaben in Parametern. Und jeder Request bringt noch eine ganze Reihe weiterer Parameter mit die in einer Anwendung überhaupt gar keine Rolle spielen.
Die ganze Validierung eines Requests beginnt schon mit der Planung, namentlich damit daß man für den Programmablauf sog. Schlüsselparameter festlegt und über diese Schlüsselparameter eine Kontrollstruktur legt. So sind diese Schlüsselparameter von den Parametern die Nutzdaten enthalten sauber getrennt.
Leider ist es so, daß die Enctypes application/x-www-form-urlencoded und multipart/form-data als die Einzigen strukturierten Content-Types gerade in dieser Hinsicht gar keine Unterstützung bieten. Von daher geht ja PHP den Weg der Strukturierung über eine bestimmte Namensgebung für die Parameter (in Perl übrigens auch).
So kann man über eine entsprechende Namensgebung die Schlüsselparameter von den Datenparametern sauber trennen. Z.B. so, daß alle Schlüsselparameter unter $_POST['prog']['key'] zu finden sind und die Nutzdaten unter $_POST['user']['name'] usw.
MFG