Sven Rautenberg: code vereinfachen_ bitte helfen!

Beitrag lesen

Moin!

»» du wandelst hier anscheinend  "POST in GET" (salopp gesagt) um - darf man den Sinn erfahren?

naja, ich hab ein formular, dieses schick ich mit POST "an sich selbst" ab und überprüfe die eingegebenen werte. wenn diverse bedingungen erfüllt werden, leite ich zu einer anderen datei weiter, die die angegebenen (GET-) parameter (datenbankmäßig) weiterverarbeitet. ist das etwa verkehrt?

Ja, das ist verkehrt.

Zum einen: Eine GET-URL darf nur begrenzt lang werden. Diese Begrenzung ist in der existierenden Serversoftware begründet, eine Begrenzung in irgendeinem Standard existiert nicht, deshalb kann man auch nicht exakt sagen, welche Längen noch funktionieren. Deine Feldnamen sehen aber nun gerade so aus, als ob sie längeren Text enthalten würden, deshalb also auch potentiell zu lang werden könnten.

Zweitens: GET und POST haben auch einen technischen Sinn. GET ist dann einzusetzen, wenn die Ausführung des Requests auf dem Server nur lesende Operationen durchführt, aber nichts dauerhaft verändert. POST hingegen sollte zum Einsatz kommen, wenn datenverändernde Operationen durchgeführt werden.

Wenn du die Aufgabe vernünftig durchführen willst, dann führst du in deinem per POST aufgerufenen Skript alle Operationen durch, die Daten schreiben, und leitest danach erst weiter auf ein Skript, welches die erfolgreiche Ausführung dieser Operation meldet. Dann kann der Benutzer diese Erfolgsseite so oft reloaden, wie er will, ohne ständig neue Datensätze anzulegen. Bei deiner jetzigen Variante würde er mit jedem Reload neue Datensätze schreiben.

Außerdem hast du bei der Bildung der URL (die ja sowieso überflüssig wird) einen ganz wichtigen Aspekt vergessen: Escaping! In dem Textfeld können Zeichen eingegeben werden, die in der gebildeten URL Sonderbedeutung haben. Ohne Escaping würde bei ungünstiger Texteingabe dein ganzer Weiterleitungsmechanismus einfach scheitern - ärgerlich für die Anwender. Escaping ist aber auch für die Absicherung gegen Angriffe eine sehr wichtige Maßnahme.

- Sven Rautenberg