$_POST Variable auf Validität überprüfen
bearbeitet von
Hallo,
> Ok, jede Menge Stoff. :)
ja, niemand hat gesagt, das wäre einfach. 🧑🔬
> Werden die `KEY -> VALUE` Paarungen eines `$_POST` Arrays dabei intrinsisch automatisch als `STRING -> STRING` interpretiert
Aufgepasst! PHP ist eine *schwach typisierte* Sprache. Das heißt, PHP kennt und unterscheidet zwar verschiedene Datentypen, konvertiert aber je nach Kontext lustig hin und her, meist ohne dass man es merkt. Deswegen ist dein Begriff "interpretiert" hier mit Vorsicht zu genießen.
Interpretiert werden die Parameter als der Typ, der in einem bestimmten Ausdruck erforderlich ist. Steht also z.B. ein URL-Parameter in einem arithmetischen Ausdruck, wird er automatisch von *String* zu *Number* konvertiert - mit der Nebenwirkung, dass unerwünschte Effekte auftreten können, wenn der String etwas enthält was nicht in einen Zahlenwert umgewandelt werden kann. So wird etwa der String "123.45" wie erwartet in die Zahl 123.45 konvertiert, der String "123,45" aber in die Zahl 123 (Achtung, Komma anstatt Dezimalpunkt!). Und der String "foo" wird einfach zu 0.
Angeliefert werden die Werte aber alle zunächst als String. Das ist auch logisch, denn sie werden ja aus den URL-Parametern gebildert, und die werden nun einmal als String im Request übermittelt. Eine weitergehende Interpretation oder Umwandlung findet nicht statt, wenn diese Werte in $_POST an das Script durchgereicht werden.
Davon unabhängig gilt, was Rolf und ich zunächst beide nicht bedacht haben: Haben die Keys bereits eckige Klammern (Array-Syntax), dann baut PHP daraus tatsächlich ein Array.
> oder kann das alles mögliche sein (z.B. `VAR -> BOOL`, `NUMBER -> NUMBER` etc.)?
Nein. Du kannst die Werte nachher in deinem Script so interpretieren, wenn es dein Programmkontext so vorsieht. Aber original in $_POST sind es Strings.
Einen schönen Tag noch
Martin
--
Ich fürchte, ich brauche ein neues Portemonnaie. Das alte ist leer.