dedlfix: GET, POST überprüfen, zur Vereinfachung nur eine Methode ratsam

Beitrag lesen

Hi!

Wie wäre es, sowas gleich von vornherein zu vermeiden? Gemäß der Faustformel: POST bei Requests, die zu Datenänderungen führen und Datenabfragen, bei denen der gleiche Request immer wieder das gleiche Ergebnis bringt, mit GET.
Soso, Faustformel ;)

Die hab ich ja nicht einfach so erfunden, sondern das ist auch die allgemeine Intention hinter den beiden Methoden: HTML 4.01 Spezifikation - Form submission. Dort ist die Rede von mit und ohne Nebenwirkungen, also GET wenn die Abfrage immer wieder ohne Nebenwirkungen ausgeführt werden kann und POST wenn Nebenwirkungen beabsichtigt sind. Das hat auch Einfluss auf Suchmaschinen und andere Automaten (wie Link-Checker), denn POST-Requests werden üblicherweise nicht ausgeführt, GET-Requests sollten problemlos in x-belibiger Zahl gestellt werden können.

Wer zum Beispiel in einer Liste mit Datensätzen jedem einen Lösch-Link (GET) hinzugefügt hat, sollte sich nicht über eine leere Datenhaltung wundern, wenn er mal sein Angebot nach toten Links absuchen lässt.

Hier mal ein Beispiel aus meiner Praxis: Navigation über eine große Tabelle, GET-Parameter zum Aufrufen eines Records und POST-Parameter zum Submit von geänderten Daten. Ein Cookie ist auch noch im Spiel, damit der Bearbeiter nach einem POST geänderter Daten wieder auf dieselbe Seite zurückkommt wo er hergekommen ist, dieselben Filter, Suchkriterien hat usw.

Passt, GET zum Abfragen, POST zum Ändern.

Warum sollte ich hier zusätzlich zu den Parametern die Request-Method abfragen, das würde die Kontrollstruktur unnötig aufblähen ohne funktionale Vorteile zu erbringen.

Was ist daran unnötig aufgebläht, wenn statt $_REQUEST gezielt $_GET oder $_POST verwendet wird? Es spart ja sogar noch 3 bis 4 Zeichen pro Anwendung ...

Ich regele das alles durch eine zweckmäßige Wahl der Parameternamen und gottseidank ist meinem Parser die Request-Method egal.

Warum ist es dir beim Auswerten egal, wenn du doch die Methoden bestimmungsgemäß im HTML notierst? Du solltest dabei auch beachten, das es erheblich einfacher ist, jemandem einen Link mit Querystring unbemerkt unterzuschieben, der dann mal eben beim Klick unerwünschte Nebenwirkungen erzeugt, nur weil du alles gleichberechtigt auswertest. Natürlich kann sowas in der Praxis nicht passieren, denn für wichtige Dinge hat man ja noch eine Bestätigungsabfrage eingebaut ... ach nee, die bläht ja nur den Code unnötig auf.

Lo!