Der Martin: getRequestBody-Methode gibt keine Formular-Werte aus

Beitrag lesen

Hallo,

public static function getBody(): array

{

	$body = [];

	if ( $_SERVER['REQUEST_METHOD'] === 'GET' )

		foreach ( $_POST as $key => $value )

			$body[$key] = filter_input( INPUT_GET, $key, FILTER_SANITIZE_SPECIAL_CHARS );

selbst ins Knie gesschossen? Wieso greifst du bei einem GET-Request auf die Keys und Values in $_POST zu? Das muss ja schiefgehen.

By the way: Warum machst du immer doppelte Zeilenumbrüche im Code? Übersichtlicher wird's dadurch nicht.

Diese soll dazu dienen, http-Anfragen von bösartiger Eingabe zu befreien.

Ja, und die Absicht ist löblich, aber der Ansatz komplett falsch. Es gibt keine per se bösartigen Eingaben. Die kontextgerechte Aufbereitung (meist durch Maskierung oder Codierung) sollte da erfolgen, wo die Daten bei der Verarbeitung in einen anderen Kontext gelangen, wo bestimmte Zeichen plötzlich Schaden anrichten könnten. Einfach bei der Ankunft alles plattzubügeln, ist kontraproduktiv.

Wenn ich jedoch in einer meiner Controller-Klassen diese getBody()-Methode abrufe ($body = Controller::getBody();), dann bekomme ich nur die Array-Keys geliefert, die entsprechenden Values bleiben leer.

Bei welcher Request-Methode? GET oder POST? Weil ... für POST sieht's ja korrekt aus. Abgesehen von der wenig sinnvollen Keule filter_input(), deren Sinnhaftigkeit ich generell in Frage stelle.

Ich weiß nicht, warum das so ist, denn bei print_r( $_POST ) erscheinen sowohl die Keys als auch die Values.

Also geht's um einen POST-Request?

Einen schönen Tag noch
 Martin

--
Wer andern eine Bratwurst brät,
braucht wohl ein Bratwurstbratgerät.