hotti: Request auswerten

Beitrag lesen

hi,

Mit $_SERVER komme ich an die Header-Daten ran. Aber wie komme ich an den eigentlichen Inhalt, also $request (hier "foobar")?

POST-Daten werden serverseitig, so sagt das Protocol HTTP, aus STDIN gelesen. Dazu hast Du ja schon den richtigen Header im Request: Content-Length. Diese Länge, in bytes, nimmt die serverseitige Anwendung zum Auslesen des Standard-Eingabekanals mit der exakten Länge. Das ist ersteinmal unabhängig von PHP, das ist rein HTTP. Hat der Serverprozess STDIN gelesen, geht es ans Parsen, dies ist wiederum vom Request-Header abhängig, was da zu tun ist.

In Deinem Fall, mit dem Req-Header
Content-Type: application/x-www-form-urlencoded; charset=utf-8

erwartet der Parser Schlüssel=Werte Paare, von denen mehrere mit dem Ampers-and oder mit dem ";" getrennt sind like
a=1;a=2;a=3;b=4;c=5&d=6&x=y

usw. Die Werte selbst sind encodet mit dem Prozent-Zeichen für bytes, die Spezial-Chars darstellen würden (z.B. Leerzeichen u.a.). Dies ist ebenfalls immer noch unabhängig von PHP, das ist rein HTTP. Btw., die Charset-Angabe im Request-Header ist optional.

Ein anderer Content-Type wäre z.B. multipart/form-data, hierbei besteht der Message-Body, wie der Name schon sagt, aus mehreren Teilen, die durch eine boundary (deklariert im Req-Header) getrennt sind. Die Einzelteile zurückzugewinnen, das ist wiederum Aufgabe des Parsers.

PHP nun, ist soweit entwickelt, dass es anhand des im Req-Header deklarierten Content-Type STDIN lesen kann und Dir im Script die Einzelteile präsentiert. Schick mal anstelle eines Einzelstrings ein paar Schlüssel-Wertepaare mit og. Content-Type, dann findest Du die Werte im POST-Arry.

Hotti